2016-04-23 106 views
0

在我的Bash腳本中,我必須啓動一個命令(aircrack-ng)來恢復var中的輸出以便稍後使用它。目標是解析.cap文件的輸出,以便知道是否存在某種數據(WPA網絡握手)。是否可以停止在讀取或提示中停止的命令?

問題是這個命令有時(取決於你想要解析的文件),停止提示用戶選擇一個選項。如果文件只有來自一個網絡的數據,它不會停止。如果文件具有不同的網絡數據,則停止。

我已經有解析命令的輸出,但問題是腳本停止。我將在啓動後立即終止命令並將輸出恢復到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,那麼輸出的內容就會丟失。 :/ – 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) }') 

一個簡單的回聲之前用管道做的伎倆! :)