Ruby在Linux上执行Bash命令
问题描述:
我正尝试编写一个ruby脚本来通过使用“macchanger”工具快速更改我的无线MAC地址。我拥有所有根权限来更改它。我试试这个:Ruby在Linux上执行Bash命令
`ifconfig #{@wifi_device.getName()} down`
output= `macchanger -m AA:BB:CC:DD:EE:FF #{@wifi_device.getName()}`
`ifconfig #{@wifi_device.getName()} up`
它通常工作得很好,但是当有一个问题,比如我输入了无效的MAC地址,并在bash打印任何错误,我无法从Ruby.It打印抓住它只有成功的消息,而不是错误。当我尝试一个无效的mac, 我的问题是否有任何建议摆脱执行bash命令并正确读取输出。
答
shell需要知道从哪里发送stderr。 2>&1
是一个很好的方式来做到这一点,它重定向2(标准错误)为1(标准输出),这是什么“输出”捕获。
output= `macchanger -m AA:BB:CC:DD:EE:FF #{@wifi_device.getName()} 2>&1`
高级Bash脚本指南在I/O Redirection上有很好的篇章。
谢谢,这对我工作,因为我想! – ccca
我很高兴能帮到你! –