Yanıtlar:
nc( netcat) Kullanılarak .
Sunucu:
$ nc -l localhost 3000
Müşteri:
$ nc localhost 3000
Hem sunucu hem de istemci standart çıktı / girdiyi okuyacak ve yazacaktır.
Bu, hem sunucu hem de istemci aynı makinede olduğunda çalışır. Aksi takdirde localhostsunucunun dış adına geçin.
Biraz daha ilginç, ona bağlanır ve gönderirseniz günün saatini veren ve gönderirseniz dbırakan bir "sunucu" q:
Sunucu (in bash):
#!/bin/bash
coproc nc -l localhost 3000
while read -r cmd; do
case $cmd in
d) date ;;
q) break ;;
*) echo 'What?'
esac
done <&"${COPROC[0]}" >&"${COPROC[1]}"
kill "$COPROC_PID"
Müşteri oturumu:
$ nc localhost 3000 d Perşembe 12 Oca 18:04:21 CET 2017 Merhaba? Ne? q
(sunucu sonra çıkar q, ancak istemci siz düğmesine basıncaya kadar gittiğini algılamaz Enter).
Genel tavsiye ile netcatdaha iyi bir yoldur.
Ama içeri bashve kshbunu da yapabilirsiniz:
exec 3<>/dev/tcp/hostname/port
echo "request" 1>&3
response="$(cat <&3)"
1>&3? Bunun neyi temsil ettiğinden emin değilim
echo "request" >&3, sanırım 1 sadece gereksiz
netcat'i deneyin (örn. nc)
echo GET / HTTP/1.0 | nc 0 80
HTTP/1.1 400 Bad Request
Date: Thu, 12 Jan 2017 13:44:23 GMT
Server: Apache/2.4.18 (Ubuntu)
Content-Length: 311
Connection: close
Content-Type: text/html; charset=iso-8859-1
echo GET / HTTP/1.0yerel http sunucuma bir GET ( ) gönderiyorumBirçok durumda netcat / socat'a erişimim olmadı. Ayrıca bash'ın execdağıtılmış bilgi işlem ortamında kullanılmasıyla ilgili sorunlar yaşadım .
Yaygınlığı nedeniyle, alternatif bir çözüm GNU AWK'nın TCP / IP yeteneklerini kullanmaktır. "İki yönlü boru" operatörü temelinde basit bir sözdizimi sağlar.
İşte bu kaynaktan bir soket üzerinden bir TCP mesajı gönderecek değiştirilmiş bir örnek :
BEGIN {
NetService = "/inet/tcp/0/cs.wisc.edu/finger"
print "coke" |& NetService
close(NetService)
}
Adresi için tam sözdizimi: /net-type/protocol/local-port/remote-host/remote-port. Ne zaman local-port0 olarak ayarlanır yerel konak istediğini tipik olan otomatik bağlantı noktası seçer. Daha okuyabilirsiniz gawkbireyin TCP / IP ağ yetenekleri burada:
ctrl+cgösterilmez. Echo kullanılıyorsa, örneğinecho "cookie" | nc localhost 9090, istemcinin çıkış akışı kapatılacaktır (gönderilen) ancak istemci yine de sunucunun sonucunu bekleyecektir.