不安定なイーサネット接続を使用する2つのホスト間のデータ転送を正しく設定する方法を理解できません。
これは私のものです。/simple/bash/script.sh
#!/bin/bash
while [ true ]; do
cat /dev/virtual | nc -v 192.168.1.1 5005 || echo "nc failed" && exit
sleep 5s
done
exit
手動で起動してもnetcat
ターゲットで実行されない場合は、次のように表示されます。
5005 (tcp) failed: Connection refused
しかし、それは終了しません。
別の方法が必要です。
netcat
接続が正常であることを確認してください。- その後、パイプ
cat /dev/virtual
。
netcat
ステータスをキャプチャしてからデフォルトのfailed: connection refused
bashスクリプトを再起動する方法はありますか?
答え1
これは働きます:
#!/bin/bash
if ! nc -z 192.168.1.1 5005 ; then
sleep 1 && "$0" & exit;
fi
nc -v 192.168.56.203 5005 < /dev/virtual
説明する:
nc -z
相手が聞いていることを確認してください。- 誰も聞いていない場合、プログラムは1秒間スリープ状態になります(明らかにこれを変更できます)。その後、他のインスタンスを起動して終了します。
- 誰かが聞いている場合、プログラムは次のメッセージを送信します。
/dev/virtual