Chcę wysłać tylko jedną krótką wartość w pakiecie UDP, ale uruchamiam polecenie
echo -n "hello" | nc -4u localhost 8000
Widzę, że serwer pobiera hello , ale muszę nacisnąć Ctrl+, caby wyjść z polecenia netcat.
Jak mogę to zakończyć po wysłaniu pozdrowienia ?
Przepraszamy, ale ponownie przeczytałem stronę podręcznika i znalazłem -q
opcję.
echo -n "hello" | nc -4u -q1 localhost 8000
działa (wyłącza się po 1 sekundzie).
Z jakiegoś powodu to nie działa -q0
.
-q seconds: after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.
Odpowiedzi:
Jeśli używasz basha, równie dobrze możesz pisać
i unikaj wszystkich dziwactw i niekompatybilności netcata.
Działa to również przy wysyłaniu do innych hostów, np .:
Nie są to „prawdziwe” urządzenia w systemie plików, ale „specjalne” aliasy bash . Dodatkowe informacje znajdują się w instrukcji Bash .
źródło
127.0.0.1
zamiast tegolocalhost
na Ubuntu 14.04. (Tak, mamlocalhost
w/etc/hosts
.)/dev/udp/
nie jest prawdziwym plikiem. To tylko nazwa pliku zinterpretowana specjalnie przez bash.Nie znalazłem
-q1
opcji w moim netcacie. Zamiast tego skorzystałem z-w1
opcji. Poniżej znajduje się skrypt bash, który zrobiłem, aby wysłać pakiet udp do dowolnego hosta i portu:źródło
Na aktualnym netcacie (v0.7.1) masz przełącznik -c:
W związku z tym,
powinien załatwić sprawę.
źródło
Netcat wysyła jeden pakiet w każdym nowym wierszu. Więc jesteś w porządku. Jeśli robisz coś bardziej złożonego, możesz potrzebować czegoś innego.
Wygłupiałem się z Wireshark, kiedy to sobie uświadomiłem. Nie wiem, czy to pomaga.
źródło
echo -n "hello\nworld" >/dev/udp/localhost/514
a otrzymasz 2 linieMiałem ten sam problem, ale używam
-w 0
opcji, aby wysłać tylko jeden pakiet i zakończyć. Powinieneś użyć tego polecenia:źródło
-w0
. Błąd: nieprawidłowy czas oczekiwania 0