Ich habe einen Prozess, mit dem über einen UNIX-Socket kommuniziert werden kann (eigentlich eine abstract socket, die ich denke, Linux-spezifisch ist).Verwenden Sie Socat zum Verbinden mit Socket, senden Sie einen Befehl, und lesen Sie eine einzige Zeile
Ich schreibe ein Shell-Skript, das Befehle an diesen Prozess senden muss. Ich entschied mich zu versuchen, SOCAT für diesen Zweck zu verwenden. Ich versuche herauszufinden, wie man (1) eine Verbindung zum abstrakten Socket herstellt, (2) einen einzelnen Befehl (eine Zeichenkette) sendet, (3) die Antwort liest und die Antwort auf stdout ausgibt.
Bisher kann ich ganz einfach verbinden, indem Sie einfach sagen:
socat ABSTRACT-CONNECT:mysocket STDIN
Dies verbindet STDIN an die Steckdose, so dass, wenn ich weiß, gibt Sie manuell einen Befehl, wird die Buchse in der Zeichenfolge lesen, und dann Ausgabe des resultierende Antwort auf die Konsole.
Außer wenn ich Socat in einem Skript ausführen, muss ich automatisch eine Zeichenfolge an STDIN senden. Okay, der einfachste Weg, dies zu tun, schien zu sein, STDIN einen String zu verpassen. Also angenommen, wir haben einen Befehl namens „status
“, würde ich sagen:
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
Diese (socat meldet keine Fehler) scheint zu funktionieren, außer das Ergebnis nicht an stdout gesendet wird. Der Anruf wird einfach ohne Antwort zurückgegeben. Also wie kann ich auch eine einzelne Zeile aus dem Socket lesen und das Ergebnis auf stdout anzeigen?
Und wie Sie dies in lokale Variable in Shell-Skript speichern? – 0andriy