Linuxシステムにユーザーアカウントがありますが、正確なIPアドレスがわかりません。しかし、私はそのうちの1つで実行されている範囲を知っています。私が望むサーバーがどのサーバーであるかを確認したい。一部のMicrosoftサーバー、一部のLinuxサーバー、一部のサーバーもダウンしています。
各サーバーを確認するシェルスクリプトがあります。
#!/bin/sh
for i in $(seq 1 127)
do
echo "192.168.1.$i:"
ssh 192.168.1.$i -l user_name
done
このコードはすべてのIPで動作します。 ssh を実行するとパスワードの入力を求められ、ssh が実行されていない場合は次の IP を試行し、サーバーがダウンしてから長い時間待ちます。また、サーバーに ssh があり、パスワードの入力を求められた場合、そのサーバーはキーボードから抜け出すことができません。
プログラムを終了せずにキーボードから両方のタイプを脱出し、次のIPに移動するにはどうすればよいですか?
たとえば、CTRL+Cプログラムを終了します。
ベストアンサー1
Ctrl-C対話型シェルフォアグラウンド操作のすべてのプロセスにSIGINT信号を送信します。その後、sh
実行中のスクリプトとssh
。
以下を追加して、シェルを終了しないようにすることができます。
trap : INT
スクリプトの始めに。
ConnectTimeoutオプションも使用できますssh
。
ssh -o ConnectTimeout=2 ...
接続しようとしているすべてのコンピュータにパスワードが公開されることに注意してください。管理者を信頼しない場合、これは良い考えではありません。