2010-11-26 8 views
9

Ich bin auf der Suche nach einem einfachen Bash-Befehl, um einen Client-Socket zu öffnen, lesen Sie alles aus dem Socket, und schließen Sie den Socket. Etwas wie wget oder curl für Sockets.Bash-Befehl zum Lesen von Netzwerk-Socket?

Gibt es einen Befehl in Bash, dies zu tun? Muss ich ein Bash-Skript schreiben?

Antwort

3

Verwenden Sie nc. Es ist schnell und einfach. Um eine Verbindung zum Client 192.168.0.2 auf Port 999, senden sie eine Anforderung für eine Ressource, und speichern Sie diese Ressource auf Platte, gehen Sie wie folgt vor:

echo "GET /files/a_file.mp3 HTTP/1.0" | nc -w 5 192.168.0.2 999 > /tmp/the_file.mp3

Schalter -w 5 besagt, dass nc 5 Sekunden max wartet für eine Antwort. Wenn nc fertig heruntergeladen ist, wird der Socket geschlossen.

Wenn Sie eine komplexere Anfrage senden möchten, können Sie gedit oder einen anderen Texteditor verwenden, es zu schreiben, speichern „reqest“ Datei, und dann Katze, die durch das Rohr zu NC-Datei:

cat request.txt | nc -w 5 192.168.0.2 999 > /tmp/the_file.mp3

Sie müssen dafür kein Skript schreiben, da es sich um einen einzeiligen Befehl handelt ... Aber wenn Sie es oft verwenden, ist das Schreiben eines Skripts ein Muss!

Ich hoffe, ich half. :)

1

Die bereits erwähnte netcat (nc) ist einfach und leistungsstark. Aber wenn Sie ein noch leistungsfähigeres Werkzeug benötigen: socat.

Verwandte Themen