キーボードを介してforループを続ける

キーボードを介してforループを続ける

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 ...

接続しようとしているすべてのコンピュータにパスワードが公開されることに注意してください。管理者を信頼しない場合、これは良い考えではありません。

おすすめ記事