Come mantenere viva la socat usando l'opzione keepalive


10

Ho questo comando socat che funziona bene, ma quando non viene trasferito nessun dato, muore dopo esattamente 5 minuti e non capisco perché come ho impostato per inviare 100 keepalive ogni 10 secondi dopo i primi 10 secondi . Da quello che ho capito della pagina man di socat, che dovrebbe tenerlo in vita per 1000 secondi che è di 16 minuti. Inoltre, se provo a impostare keepcnt su 200, ottengo "setsockopt (7, 6, 6, {200}, 4): argomento non valido", ma in nessun posto su Internet potrei trovare qual è il valore massimo per quell'argomento, quindi penso Qui mi manca qualcosa di molto ovvio. Sperimentare di più con gli argomenti non ha mai modificato il valore di timeout di 5 minuti. L'impostazione di un valore più basso per keepcnt e di valori più alti di keepintvl è accettata ma semplicemente non ha alcun effetto visibile.

socat -d -d -d -v pty,link=/tmp/lp1 tcp:192.168.0.5:9100,reuseaddr,keepalive,keepidle=10,keepintvl=10,keepcnt=100
2017/05/31 08:53:01 socat [16065] I Questo prodotto include software sviluppato da OpenSSL Project per l'uso in OpenSSL Toolkit. (Http://www.openssl.org/)
2017/05/31 08:53:01 socat [16065] I Questo prodotto include software scritto da Tim Hudson (tjh@cryptsoft.com)
2017/05/31 08:53:01 socat [16065] I impostando l'opzione "collegamento simbolico" su "/ tmp / lp1"
2017/05/31 08:53:01 socat [16065] I openpty ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0
2017/05/31 08:53:01 socat [16065] N PTY ​​è / dev / pts / 1
2017/05/31 08:53:01 socat [16065] Ho impostato l'opzione "so-keepalive" su 1
2017/05/31 08:53:01 socat [16065] Ho impostato l'opzione "tcp-keepidle" su 10
2017/05/31 08:53:01 socat [16065] I impostando l'opzione "tcp-keepintvl" su 10
2017/05/31 08:53:01 socat [16065] Ho impostato l'opzione "tcp-keepcnt" su 100
2017/05/31 08:53:01 socat [16065] N apertura connessione ad AF = 2 192.168.0.5:9100
2017/05/31 08:53:01 socat [16065] Inizio avvio loop di connessione
2017/05/31 08:53:01 socat [16065] I socket (2, 1, 6) -> 7
2017/05/31 08:53:01 socat [16065] N connesso correttamente dall'indirizzo locale AF = 2 192.168.0.4:56482
2017/05/31 08:53:01 socat [16065] Ho risolto e aperto tutti gli indirizzi di calzino
2017/05/31 08:53:01 socat [16065] N avvio ciclo di trasferimento dati con FD [5,5] e [7,7]
2017/05/31 08:58:01 socat [16065] N socket 2 (fd 7) è presso EOF
2017/05/31 08:58:02 socat [16065] Timeout sondaggio (nessun dato entro 0,500000 secondi)
2017/05/31 08:58:02 socat [16065] I close (5)
2017/05/31 08:58:02 socat [16065] I shutdown (7, 2)
2017/05/31 08:58:02 socat [16065] N uscendo con stato 0

Alcuni router NAT si sono disconnessi dopo un determinato periodo di tempo anziché l'attività
Ferrybig,

Risposte:


5

Dalla manpage socat per -t<timeout>:

Quando un canale ha raggiunto EOF, la parte di scrittura dell'altro canale viene chiusa.

Prova ad aggiungere l' ignoreeofopzione.


0

Se stai usando un comando ASCOLTA come OPENSSL-LISTEN, TCP-LISTENecc., L' forkopzione interromperà le connessioni a un processo figlio in modo che socat possa continuare a ricevere.

Esempio:

socat - OPENSSL-LISTEN:443,method=TLS1.2,verify=0,cert=cert.pem,key=key.pem,fork

Grazie a: /unix//a/283289/15954

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.