불안정한 이더넷 연결을 사용하는 두 호스트 간의 데이터 전송을 올바르게 설정하는 방법을 이해할 수 없습니다.
이 내 꺼야/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