2016-02-22 25 views
1

Shell腳本:在特定的時間間隔後發送控制c到一個linux命令?

我正在做一些測試,在我的路由器上,我正在使用mdk3和reaver實用程序。

這裏有兩個命令:

[cmd1] echo y|reaver -i wlan2mon -b 00:FF:EE:CC:DS:B6 -vv -l 230 
[cmd2] sudo mdk3 wlan2mon a -a 00:FF:EE:CC:DS:B6 

目標:

我想創建一個shell腳本,將運行[CMD1] 2分鐘,然後它會發送CTRL + C信號到[cmd1],以便它將保存reaver會話。

然後cmd2將運行2分鐘,然後這也將停止。

這兩個將在循環中。

下面是我寫的示例腳本,你可以給它添加計時器..?

#!/bin/bash 

while :; do echo 
echo "running mdk for 2 minutes"; 
timeout 120 sudo mdk3 wlan2mon a -a 00:FF:EE:CC:DS:B6; 

echo "mdk finished"; 
echo "starting reaver for 2 minutes "; 

#here timeout won't work, as ctrl+c can only save the state. 

//add code here to run reaver utility for two minutes and send ctrl+c to it 
echo y|reaver -i wlan2mon -b 00:FF:EE:CC:DS:B6 -vv; 
echo "reaver ran for two minutes"; 



done 
+0

[超時一個在bash沒有不必要的延誤命令]的可能的複製(HTTP://計算器.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay) – Vorsprung

+0

'sleep 120; killall -INT reaver'? – jamieguinan

+0

你能解釋@jamieguinan – yogeshkmrsoni01

回答

2

我不熟悉的reaver方案,但我認爲下面應該工作,

# Run reaver as a background process (add &) 
echo y|reaver -i wlan2mon -b 00:FF:EE:CC:DS:B6 -vv & 
# Save the process id. 
reaverpid=$! 
# Sleep 2 minutes 
sleep 120 
# Send SIGINT, which is what ctrl-c normally does. 
kill -SIGINT $reaverpid 
相關問題