Ho un processo che può essere comunicato tramite un socket UNIX (in realtà uno abstract socket che penso sia specifico per Linux).Utilizzare socat per connettersi al socket, inviare un comando e leggere una singola riga
Sto scrivendo uno script di shell che deve inviare comandi a questo processo. Ho deciso di provare a utilizzare SOCAT per questo scopo. Sto cercando di capire come (1) connettersi al socket astratto, (2) inviarlo un singolo comando (una stringa), (3) leggere la risposta e stampare la risposta allo stdout.
Finora, posso collegare facilmente semplicemente dicendo:
socat ABSTRACT-CONNECT:mysocket STDIN
Questo si collega STDIN alla presa, quindi se lo so manualmente digita un comando, il socket leggerà nella stringa, e poi l'uscita risultante risposta alla console.
Tranne quando eseguo socat in uno script, è necessario automatizzare l'invio di una stringa a STDIN. Ok, quindi il modo più semplice per farlo sembrava essere quello di passare una stringa a STDIN. Quindi supponiamo di avere un comando chiamato "status
", direi:
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
Questo sembra funzionare (socat rapporti nessun errore), tranne il risultato non viene inviato a stdout. Piuttosto, la chiamata torna semplicemente senza risposta. Quindi, come posso leggere anche una singola linea dal socket e visualizzare il risultato su stdout?
E come salvare questo in variabile locale nello script di shell? – 0andriy