2010-09-23 16 views
8

Quando si utilizza il comando ping su praticamente ogni sistema UNIX disponibili, il ping l'indirizzo di broadcast è semplice: (! E continuamente fastidioso)Linux ping trasmissione interruttore

$ ping 192.168.11.255 

Tuttavia, quando questo è fatto su Linux, un non-standard risposta si verifica:

$ ping 192.168.11.255 
Do you want to ping broadcast? Then -b 

questo mi ha infastidito a non finire da quando ho visto per la prima volta - Linux ping non ha usato per essere in questo modo. Ho cercato la fonte di questo interruttore e non sono riuscito a trovarlo quando è entrato, né ho discusso sul perché fosse necessario.

Sembra che questo interruttore non è stato nemmeno considerato sufficiente:

$ ping -b 192.168.11.255 
WARNING: pinging broadcast address 
PING 192.168.11.255 (192.168.11.255) 56(84) bytes of data. 
64 bytes from 192.168.11.22: icmp_seq=1 ttl=64 time=0.225 ms 

questo è davvero necessario? È molto allettante scrivere una patch che risolverà Linux ping in modo che funzioni come dovrebbe ...

Non posso credere che nessun altro si sia lamentato di questo, ma non riesco a trovarlo su Google se lo hanno fatto .

+0

Sono d'accordo. Sono curioso anche perché questo è stato aggiunto. – aioobe

+0

Prima di fare ciò, è necessario pensarci due volte prima di non bloccare la rete perché centinaia di macchine rispondono con un pacchetto ICMP. – nos

+1

Questo dovrebbe essere su superuser.com .... – t0mm13b

risposta

2

Si potrebbe mettere

alias ping='ping -b' 

nel file .bashrc :-)

+0

Penso che questa domanda fosse più simile al motivo per cui l'interruttore esiste in primo luogo. –

+0

Matti ha ragione. Inoltre, l'opzione -b funziona solo se l'indirizzo è un indirizzo di broadcast; in caso contrario, viene invece visualizzato un display di utilizzo. – Mei

+0

@Matti: Sì, capisco che la domanda riguardava il motivo per l'aggiunta dell'opzione '-b', al contrario di una soluzione alternativa per questo! @ David: Funziona qui. Come ho capito le cose dal codice sorgente ping (http://www.linux-ipv6.org/gitweb/gitweb.cgi?p=gitroot/iputils.git;a=blob;f=ping.c;h=4472d777f7e098525b57c09c8f748ec877e6d518; hb = HEAD) consente solo la trasmissione impostando un'opzione socket. Immagino che potrebbe non funzionare su alcuni sistemi, però. –

1

posso plausibilmente pensare a uno scenario in cui questo potrebbe essere utile. Se ci si trova su una rete con un indirizzo di broadcast configurato che non è l'indirizzo in cui tutti i bit dell'host sono uno. Quindi potresti teoricamente accidentalmente eseguire il ping dell'indirizzo di broadcast se non ci fosse una tale richiesta. E immagino sia brutto.