そのため、シェルで次のコマンドを実行します。
~/for ip in $(cat ip_list);do mkdir $ip; cd $ip; for vuln in $(snmap http);do nmap --script=$vuln $ip -oN $vuln;done cd ../ ; done
そして、約1日ほど正常に実行されました。ディレクトリを正しく作成してナビゲートします。
しかし、今スクリプトの1つが中断されました...
だから私がしたいのは、CTR + Cなどのコアコマンドを使用して、実行中のスクリプトを終了せずにnmapの繰り返しを終了することです。これにより、最初から開始したりIPリストを変更したりする必要がなくなります。
ベストアンサー1
この回答は Bash 専用です。
これにはトラップを使用できます。これは例示的な例である。ループを続行するにはCtrl+を使用してくださいc。端末を閉じたり、他の端末で終了したりする以外に、スクリプトを停止する方法はありません。
#!/bin/bash
trap ps SIGINT
for i in a b c d; do
for j in w x y z; do
echo ----$i$j------ && ping stackexchange.com -c 10
done
done
exit
あなたのスクリプトは次のようになります(私がいくつかの改善を含む)。しかし、まだテストされていません。
#!/bin/bash
trap '' SIGINT
for ip in $(cat ip_list); do
mkdir $ip && cd $ip &&
for vuln in $(snmap http);do
nmap --script=$vuln $ip -oN $vuln
done &&
cd ..
done
私が導入した変更は、&&
エラーが発生する可能性がある論理パスの入力を防ぎます。可能であれば、そのような制限を適用する方が安全です。こう言うと:
mkdir $ip; cd $ip;
ディレクトリを作成できない場合、cd
エラーが発生します。
あなたがそう言うとき:
mkdir $ip && cd $ip
何らかの理由でディレクトリが作成されていない場合、cd
試行は行われません。mkdir $dir
からまでのすべてのcd $dir
コマンドcd ..
をリンクすると、&&
ロジックが明確になり、構造が正しくありません。ディレクトリの使用;
と作成に失敗した場合は、そのディレクトリに入ることはできませんが、おそらく..
。