簡體   English   中英

Ruby在Linux上執行Bash命令

[英]Ruby Executing Bash Commands on Linux

我正在嘗試編寫一個ruby腳本,以使用“ macchanger”工具快速更改我的無線mac地址。我擁有更改它的所有root用戶權限。 我嘗試這樣做:

  `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捕獲到它,它僅打印成功消息,而不是錯誤。 當我嘗試一個無效的mac時,我的問題是是否有任何建議可以擺脫執行bash命令並正確讀取輸出的問題。

使用 macchanger時,無需調用shell命令。 您可以將macchanger放入您的當前文件夾,然后require_relative './macchanger' 之后,您可以使用MacChanger

Shell需要知道將stderr發送到哪里。 2>&1是執行此操作的好方法,它將2(stderr)重定向到1(stdout),這是“輸出”正在捕獲的內容。

 output= `macchanger -m AA:BB:CC:DD:EE:FF #{@wifi_device.getName()} 2>&1`

《高級Bash腳本指南》在I / O重定向方面有一章非常出色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM