Je veux envoyer une seule valeur courte dans un paquet UDP, mais en exécutant la commande
echo -n "hello" | nc -4u localhost 8000
Je peux voir que le serveur reçoit le bonjour mais je dois appuyer sur Ctrl+ cpour quitter la commande netcat.
Comment puis-je l'arrêter après avoir envoyé bonjour ?
Désolé, pour le bruit, j'ai relu la page de manuel et j'ai trouvé l' -q
option.
echo -n "hello" | nc -4u -q1 localhost 8000
fonctionne (il se ferme après 1 seconde).
Pour une raison quelconque, cela ne fonctionne pas avec -q0
.
-q seconds: after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.
Réponses:
Si vous utilisez bash, vous pouvez aussi bien écrire
et évitez toutes les idiosyncrasies et incompatibilités de netcat.
Cela fonctionne également pour l'envoi à d'autres hôtes, par exemple:
Ce ne sont pas de "vrais" périphériques sur le système de fichiers, mais des alias "spéciaux" bash . Il y a des informations supplémentaires dans le manuel Bash .
la source
127.0.0.1
placelocalhost
sur Ubuntu 14.04. (Oui, j'ailocalhost
en/etc/hosts
.)/dev/udp/
n'est pas un vrai fichier. Ce n'est qu'un nom de fichier interprété spécialement par bash.Je n'ai pas trouvé l'
-q1
option sur mon netcat. Au lieu de cela, j'ai utilisé l'-w1
option. Vous trouverez ci-dessous le script bash que j'ai fait pour envoyer un paquet udp à n'importe quel hôte et port:la source
Sur un netcat actuel (v0.7.1), vous avez un commutateur -c:
Par conséquent,
devrait faire l'affaire.
la source
Netcat envoie un paquet par nouvelle ligne. Alors tu vas bien. Si vous faites quelque chose de plus complexe, vous pourriez avoir besoin d'autre chose.
Je plaisantais avec Wireshark quand j'ai réalisé cela. Je ne sais pas si ça aide.
la source
echo -n "hello\nworld" >/dev/udp/localhost/514
et vous obtiendrez 2 lignesJ'ai eu le même problème mais j'utilise l'
-w 0
option pour envoyer un seul paquet et quitter. Vous devez utiliser cette commande:la source
-w0
. Erreur: temps d'attente invalide 0