2011-01-19 18 views
58

C'è un modo per associare rapidamente a una porta TCP/indirizzo IP e stampare semplicemente tutte le informazioni su STDOUT? Ho una semplice soluzione di debug che scrive cose a 127.0.0.1:4444 e mi piacerebbe essere in grado di legare semplicemente una porta da bash e stampare tutto ciò che incontra. C'è un modo semplice per farlo?Simple Socket Server in Bash?

+0

correlati http://unix.stackexchange.com/questions/49936/dev-tcp-listen-instead-of-nc-listen –

risposta

87
$ nc -k -l 4444 > filename.out 

vedere nc(1)

+3

Un modo per farlo che non lo richiede per essere eseguito in un ciclo, cioè legare fino alla morte? Sto ripetutamente collegando e disconnettendo il socket e 'nc' muore se non lo eseguo in questo modo:' while true; do nc -l 4444; done'. –

+2

Aggiungi l'opzione '-k'. –

+0

Su alcune distro è necessario cambiarlo in 'nc -k -l -p 4444'. –

37

Solo perché hai chiesto come farlo in bash, anche se netcat risposta è molto valida:

$ exec 3<>/dev/tcp/127.0.0.1/4444 
    $ cat <&3 
+11

Ma questo non funziona per l'ascolto. Non penso che sia possibile ascoltarlo usando rigorosamente bash – Vijayender

+6

Questa soluzione richiede infatti un server di ascolto. Bash non può farlo con '/ dev/tcp' come spiegato in http://unix.stackexchange.com/a/49947/13746 – xebeche

+1

Ascolto? Ecco a cosa serve xinetd! : D – Evi1M4chine

8

che sta lavorando, come si aspettava:

nc -k -l 4444 |bash 

e quindi si

echo "ls" >/dev/tcp/127.0.0.1/4444 

quindi si vede l'elenco eseguito da bash.

[un avviso di protezione breve]
Naturalmente se si lascia una cosa del genere in esecuzione sul computer, si dispone di una porta spalancata per tutti i tipi di attacchi perché i comandi possono essere inviati da qualsiasi account utente su qualsiasi host nella tua rete. Ciò non implementa alcuna sicurezza (autenticazione, identificazione) e invia tutti i comandi trasmessi non crittografati sulla rete, quindi può essere facilmente abusato.

1

Aggiunta di una risposta utilizzando ncat che @Freedom_Ben allude:

ncat -k -l 127.0.0.1 4444 

e la spiegazione di opzioni da uomo NCAT:

-k, --keep-open   Accept multiple connections in listen mode 
-l, --listen    Bind and listen for incoming connections 
+0

'ncat' viene fornito con' nmap' e supporta le connessioni simultanee, mentre il comando precedente 'nc' non lo fa. –