Use
while sleep 1; do
socat pty,link=/dev/tty_remote_serial,waitslave tcp:10.8.0.2:3333;
done
Estou desenvolvendo um pequeno aplicativo que enviará SMS usando o dispositivo remoto como gateway.
Esses dispositivos estão conectados à VPN, mas isso não importa.
O gateway SMS possui fisicamente porta serial /dev/AMA0
.
Estou usando ser2net
no SMS Gateway para compartilhar a porta serial pela Internet,
e estou usando socat
para criar porta serial virtual no VPS e "receber" porta compartilhada.
Aqui estão minhas confissões:
SMS Gw:
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
Estou usando gammu
para controlar o dispositivo SMS. Quando eu faço logon no VPS e executo este comando, vejo:
gammu identify
Device : /dev/tty_remote_rpi_serial
Manufacturer : SIMCOM_Ltd
Model : unknown (SIMCOM_SIM800L)
Firmware : Revision:1308B08SIM800L16
IMEI : 867XXXXXXXXXXX23
SIM IMSI : XXXXXXXXXX491925
E é perfeito. Eu posso usar porta serial remota e tudo funciona perfeito. O problema é quando eu corro gammu identify
mais uma vez. O dispositivo /dev/tty_remote_rpi_serial
não existe porque socat
foi finalizado. Quando eu reinicio o socat
service, tudo funciona bem UMA VEZ. Devo reiniciar socat
de cada conexão fechada (de mincom) ou comando executado ( gammu identify
).
Existe uma maneira de impedir que socat
termine?
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()
Use
while sleep 1; do
socat pty,link=/dev/tty_remote_serial,waitslave tcp:10.8.0.2:3333;
done
Tags serial-port sms socat