2016-04-23 8 views
0

私のBashスクリプトでは、後で使用するために出力をvarに回復するコマンド(aircrack-ng)を起動する必要があります。対象は、何らかの種類のデータ(WPAネットワークのハンドシェイク)があるかどうかを知るために、.capファイルの出力を解析することです。読み取りまたはプロンプトで停止したコマンドを停止することはできますか?

このコマンドは、(解析するファイルに応じて)時には1つのオプションを選択するようユーザーに求めている問題です。ファイルが1つのネットワークからのデータしか持っていない場合、それは停止しません。ファイルに異なるネットワークデータがある場合、ファイルは停止します。

私はすでにコマンドの出力を解析していますが、問題はスクリプトの停止です。私は、起動直後にコマンドを終了し、varへの出力を回復し、スクリプトの停止を望まない。

最後に&と一緒に起動してバックグラウンドで実行してから強制終了しましたが、とにかく停止しました。

nets_from_file=$(aircrack-ng /path/to/somefile.cap 2> /dev/null | egrep "WPA \(1" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }' &) 

kill -9 $(ps aux | grep aircrack-ng | grep -v "grep" | awk '{print$2}') > /dev/null 2>&1 

停止を引き起こしている最初のコマンドを起動し、出力を回復し、スクリプトを停止せずにそのコマンドを終了する方法はありますか?

+1

コマンドの入力を '/ dev/null'にリダイレクトすることができます。その後、ユーザーからの回答を取得しようとするとすぐにEOFを取得します。あるいは、 'yes'コマンドをパイプして答えを与えることができます。 – Barmar

+0

私は試しましたが、aircrack-ngコマンドに/ dev/nullを置くと、varにキャッチする出力が失われました。 :/ – OscarAkaElvis

+0

これは出力をリダイレクトしているので、**入力**をリダイレクトすると言いました。これは ' Barmar

答えて

0

woow ...私はそれを見つけました!驚くほどシンプルな頭痛の後に...

nets_from_file=$(echo "1" | aircrack-ng /path/to/somefile.cap 2> /dev/null | egrep "WPA \(0" | awk '{ saved = $1; $1 = ""; print substr($0, 2) }') 

シンプルエコー前にパイプをした! :)

関連する問題