Editado após o esclarecimento do OP sobre o caso de uso:
Você não pode fazer isso usando o último lançamento oficial de bash
(atualmente 4.3.30 de acordo com esta página ). lib/sh/netopen.c
mostra que o bash abre um soquete UDP ( SOCK_DGRAM
) e tenta se conectar diretamente sem olhar o endereço IP para determinar se faria sentido definir opções de soquete específicas (no seu caso SO_BROADCAST
).
Sua melhor aposta seria enviar um patch para os atuais bash
mantenedores ou a lista de discussão apropriada, incluí-la nos lançamentos oficiais e aguardar até que a versão bash bastante moderna do seu NAS seja atualizada para uma versão ainda mais moderna. versão incluindo seu recurso.
Resposta curta: bash
pode atualmente não fazer isso.
Resposta anterior :
Você precisa recorrer a socat
:
$ echo -e "\xff" | socat - UDP-DATAGRAM:255.255.255.255:4000,broadcast
Gravar para /dev/udp
usa a implementação de soquete interno de bash
. Tanto quanto é do meu conhecimento, esta implementação não permite enviar datagramas UDP para o endereço de broadcast, pois isso requer a configuração de um SO_BROADCAST
flag para o soquete antes do envio.
Usar netcat
também não é uma opção, pois rejeita a transmissão UDP:
$ echo -e "\xff" | nc -u 255.255.255.255 4000
nc: netcat.c:573: main: Assertion 'connect_sock.proto != NETCAT_PROTO_UDP' failed.
Aborted (core dumped)
Editar:
Às vezes, o netcat tem o sinal -b
para ativar o endereço de transmissão. Veja esta resposta sobre a transmissão UDP no Ubuntu.