Na porcie 5144 nasłuchuje proces demona, którego nie mogę zmodyfikować.
Chcę użyć netcata, aby wysłać zawartość pliku tekstowego na serwer, ale powoduje netcat
to zawieszenie terminala, dopóki nie naciśnie Ctrl+ C:
cat file.txt | nc -u 127.0.0.1 5144
Jedynym sposobem, w jaki mogę go uruchomić, jest nc -u 127.0.0.1 5144
ręczne uruchomienie i skopiowanie / wklejenie zawartości pliku.
Jakieś pomysły?
Uwaga:
cat file.txt | ...
prowadzi dobash: ...: command not found
i mogę nadal korzystać z terminala- używanie
nc -u 127.0.0.1 5144 < file.txt
prowadzi do takiego samego zachowania jak używanie | powyżej
linux
data-transfer
netcat
Amil
źródło
źródło
cat file.txt | …
? Jak onc -u 127.0.0.1 5144 < file.txt
?bash: ...: command not found
i użycie „<file.txt” robi to samo, co | operator (netcat po prostu się zawiesza)bash: ...: command not found
”? A może mówi „bash: cat: command not found
” lub „bash: nc: command not found
”? A następnie czy następnie wychodzi do monitu powłoki, czy też zawiesza się? (Zachęcam do edycji pytania w celu dodania tych szczegółów, więc osoby w Australii, które właśnie się budzą, nie muszą czytać wszystkich tych komentarzy, aby dowiedzieć się, jakie są twoje objawy.)Odpowiedzi:
Jeśli używasz GNU w wersji netcat, możesz użyć flagi -c, aby zamknąć połączenie na EOF.
Jeśli używasz oryginalnej wersji narzędzia, możesz użyć flagi -q.
Przykładem oryginalnej wersji jest:
Dodałem „-q 0” do twojego oryginalnego polecenia. To zamyka połączenie po wysłaniu pliku.
źródło
-l -p <port>
do słuchania. Wersja GNU po prostu bierze-l <port>
.Zakładając, że po wysłaniu połączenia EOF pozostanie bezczynny, możesz użyć
-w timeout
opcji, która działa taktimeout
, jakby była równa zero (w przeciwieństwie do głupiej-q
opcji ...)źródło
Jeśli przenosisz z FreeBSD do Windows:
FreeBSD:
cat file.txt | nc -N 10.0.0.5 5144
-N
wyłączy gniazdo sieciowe po EOFWindows:
nc -l -p 5144 > output.txt
-l
przestanie nasłuchiwać po zamknięciu połączenia (w przeciwieństwie do-L
)źródło