ser2net + socat + 감무. socat 종료됨

ser2net + socat + 감무. socat 종료됨

원격 장치를 게이트웨이로 사용하여 SMS를 보내는 작은 앱을 개발 중입니다.

이러한 장치는 VPN으로 연결되어 있지만 중요하지 않습니다.

SMS 게이트웨이에는 물리적으로 직렬 포트가 있습니다 /dev/AMA0. 저는 ser2net인터넷을 통해 직렬 포트를 공유하기 위해 SMS 게이트웨이에 사용하고 있으며, socatVPS에서 가상 직렬 포트를 생성하고 공유 포트를 "수신"하는 데 사용하고 있습니다.

내 의견은 다음과 같습니다.

SMS 게이트웨이:

cat /etc/ser2net.conf 
3333:raw:0:/dev/ttyAMA0:9600,8DATABITS,NONE,1STOPBIT

VPS:

socat pty,link=/dev/tty_remote_serial,waitslave tcp:10.8.0.2:3333

SMS 장치를 제어하는 ​​데 사용합니다 gammu. VPS에 로그인하고 이 명령을 실행하면 다음이 표시됩니다.

gammu identify
Device               : /dev/tty_remote_rpi_serial
Manufacturer         : SIMCOM_Ltd
Model                : unknown (SIMCOM_SIM800L)
Firmware             : Revision:1308B08SIM800L16
IMEI                 : 867XXXXXXXXXXX23
SIM IMSI             : XXXXXXXXXX491925

그리고 그것은 완벽합니다. 원격 직렬 포트를 사용할 수 있으며 모든 것이 완벽하게 작동합니다. 문제는 다시 달릴 때이다 gammu identify. 종료로 인해 장치가 /dev/tty_remote_rpi_serial존재하지 않습니다 socat. socat서비스를 다시 시작하면 모든 것이 잘 작동합니다. socat닫힌 연결(mincom에서)이나 실행된 명령( )을 모두 다시 시작해야 합니다 gammu identify.

해고를 방지할 수 있는 방법이 있나요 socat?

2016/01/06 04:50:04 socat[4233] N read(5, 0x16ea680, 8192): Input/output error (probably PTY closed)
2016/01/06 04:50:04 socat[4233] N socket 1 (fd 5) is at EOF
2016/01/06 04:50:04 socat[4233] I shutdown(6, 1)
2016/01/06 04:50:04 socat[4233] D shutdown()  -> 0
2016/01/06 04:50:04 socat[4233] D data loop: sock1->eof=2, sock2->eof=0, closing=1, wasaction=1, total_to={0.000000}
2016/01/06 04:50:04 socat[4233] D select(7, &0x40, &0x0, &0x0, &999.000000)
2016/01/06 04:50:04 socat[4233] D select -> (, 0x40, 0x0, 0x0, &998.974365), 1
2016/01/06 04:50:04 socat[4233] D read(6, 0x16ea680, 8192)
2016/01/06 04:50:04 socat[4233] D read -> 0
2016/01/06 04:50:04 socat[4233] N socket 1 (fd 5) is at EOF
2016/01/06 04:50:04 socat[4233] I shutdown(6, 1)
2016/01/06 04:50:04 socat[4233] D shutdown()  -> -1
2016/01/06 04:50:04 socat[4233] I shutdown(6, 1): Transport endpoint is not connected
2016/01/06 04:50:04 socat[4233] N socket 2 (fd 6) is at EOF
2016/01/06 04:50:04 socat[4233] I close(5)
2016/01/06 04:50:04 socat[4233] D close()  -> 0
2016/01/06 04:50:04 socat[4233] D unlink("/dev/tty_remote_rpi_serial")
2016/01/06 04:50:04 socat[4233] D unlink()  -> 0
2016/01/06 04:50:04 socat[4233] I shutdown(6, 2)
2016/01/06 04:50:04 socat[4233] D shutdown()  -> -1
2016/01/06 04:50:04 socat[4233] I shutdown(6, 2): Transport endpoint is not connected
2016/01/06 04:50:04 socat[4233] N exiting with status 0
2016/01/06 04:50:04 socat[4233] D exit(0)
2016/01/06 04:50:04 socat[4233] D starting xioexit()
2016/01/06 04:50:04 socat[4233] D finished xioexit()

답변1

사용

while sleep 1; do
    socat pty,link=/dev/tty_remote_serial,waitslave tcp:10.8.0.2:3333;
done 

관련 정보