私はリモートサーバIPのリストを通り、各行のnetcat(telnet)で接続し、いくつかのコマンドを実行するbashスクリプトを実行しています。私のスクリプトが再びループするようにnetcatを終了するには?
問題は、リスト内の次のIPにループするようにnetcatを終了させる方法がわからないことです。
#!/bin/bash
while ISF= read -r line;do
(
sleep 3
printf 'command1'
sleep 3
printf 'command2'
sleep 3
) | nc $line
done < ~/servers.txt
リモートサーバはEOFを送信しない何かが、スクリプトが再びループスルーをすることができますので、私はnetcatをでecho
またはprintf
はnetcatをを終了させることが可能であるので、そこに:
ここでは、関連するビットですか?私は実際には、タイムアウトのために-w
フラグを実行しません。なぜなら、私はこれを行う必要があるサーバーがかなりありますし、タイムアウトは時間がかかるからです。
Hmmm、ただ一つの長い推測: 'printf 'echo" QUIT "''? – joaumg
いいえ、「QUIT」という単語をリモートサーバーに送信するだけで動作しません。 telnet(CTRL +)と同様のnetcatにはある種のエスケープ機能があると思いますが、それは何か分かりません。 – Moses
しかし、アクティブな接続にquitコマンドを送信すると、現在の接続が閉じられます...いいえ?とにかく 'printf 'echo"^Z "'' IIRC。 – joaumg