2016-08-12 6 views
0

"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コマンドを実行し、出力を正しく読み取るための任意の提案がある場合。

答えて

1

シェルはstderrを送信する場所を知る必要があります。 2>&1は、2(stderr)を1(stdout)にリダイレクトして、 "出力"がキャプチャしているものをリダイレクトするのに最適です。

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

高度なbashのスクリプトガイドはI/O Redirectionに大きな章があります。

+1

ありがとう、これは私のために働いてくれてありがとう! – ccca

+0

私は助けることができてうれしいです! –

2

this macchangerを使用すると、シェルコマンドを呼び出す必要はありません。あなたの現在のフォルダにrequire_relative './macchanger'とmacchangerを入れることができます。この後、あなたはクラスを使用することができますMacChanger

+0

ありがとう、私はそれを使用するつもりです – ccca

+1

これはあなたの質問に直接答えませんが。これはアプリケーションにとってより優れたプログラムによるソリューションです。手作業でエラーリダイレクト/チェックを行う必要がなくなり、より大きなコミュニティーにそれをオフロードできます。 –

関連する問題