Mam wiele pól linuksowych z bardzo ograniczonym zestawem poleceń i miejsca na dysku. Ale ma na sobie telnet
rozkaz.
Zdalnie łączę się z każdą z tych sond (programowo) i wydaje jedną komendę linux przez SSH.
Muszę uruchomić jedno polecenie, aby połączyć się z konkretną maszyną za pomocą usługi telnet, a następnie natychmiast się rozłączyć .
Mogę to wszystko zrobić, ale od razu odłączenie . Telnet otwiera jakąś konsolę lub terminal i nie mogę znaleźć jednoliniowego polecenia, aby uruchomić polecenie telnet, a następnie natychmiast się rozłączyć.
Jeśli to zrobię, mogę z łatwością przeanalizować tekstowe dane wyjściowe pod kątem komunikatów o błędach, ponieważ nie mogę połączyć się z maszyną na określonym porcie i właśnie tego szukam.
Jak mogę uruchomić jednoliniowe polecenie, aby połączyć się z maszyną za pomocą usługi Telnet i rozłączyć się później?
Odpowiedzi:
Powinieneś być w stanie przesłać
exit
polecenie do STDIN wtelnet
. Próbować:i zobacz, czy to zadziała. (wydaje się, że działa na moim serwerze internetowym, ale YMMV).
źródło
Najprostszą i najłatwiejszą metodę podano poniżej.
n - Czas oczekiwania w sekundach przed automatycznym wyjściem. Może być ułamkowy jak 0,5. Pamiętaj, że niektóre wymagane dane wyjściowe mogą nie zostać zwrócone w określonym czasie oczekiwania. Może więc być konieczne odpowiednie zwiększenie.
server - docelowy adres IP lub nazwa hosta.
port - docelowy numer portu usługi.
Możesz również przekierować dane wyjściowe do pliku w ten sposób,
źródło
W moim przypadku to działa. (CentOS 7):
źródło
Myślę, że lepszym narzędziem do bezpośredniego wysyłania poleceń i uzyskiwania danych wyjściowych byłoby netcat. To proste, ale potężne narzędzie do wprowadzania poleceń przez porty. Możesz zobaczyć przykład użycia w tym pytaniu superużytkownika: /superuser/261900/how-can-i-pipe-commands-to-a-netcat-that-will-stay-alive - pytający podaje działający przykład w którym połączenie zamyka się po kilku sekundach.
A jeśli chcesz tylko przetestować łączność, skorzystaj z tego: http://terminalinflection.com/use-netcat-not-telnet-to-test-network-connectivity/
źródło
&& exit
sprawdzić, czy się rozłączy (przynajmniej w ssh to wystarczy).&& exit
nie działało Jeśli glibc powinien istnieć i wierzę, że tak. Dlaczego miałbync.traditional
narzekać na to, jakby go brakowało?Jest to kolejna wersja powyższej odpowiedzi, która sprawia, że działa ona trochę bardziej jak „normalna” składnia telnet. Jeśli podoba ci się moja odpowiedź, proszę oddać głos nie na to, ale na oryginał.
źródło
Oto rozwiązanie, które znalazłem w Internecie:
Działa dla mnie na SunOS i HP-UX
źródło
Próbować
Najlepsze jest to, że otrzymujesz również status wyjścia. Jeśli telnet zakończy się sukcesem, kod zakończenia będzie wynosił 0 lub jego 1
źródło
Unikaj netcat, jeśli masz niestandardowe trasy, ponieważ nie przestrzega reguł routingu. W podobny sposób
nslookup
,dig
ihost
ignorować plik / etc / hosts ( wpisy nslookup, dig, Firefox ignorowanie pliku / etc / hosts ).tj .: w przeciwieństwie do aplikacji i narzędzi, takich jak
telnet
i/dev/tcp
( Testowanie zdalnego portu TCP za pomocą telnetu za pomocą komendy jednowierszowej ), które są zgodne z regułami routingu systemu,nc
używa bramy domyślnej, chyba że nakazano użycie źródłowego adresu IP z-s
:Musiałem przetestować, czy aplikacja może dotrzeć do zasobu, a jeśli trasy są w dół,
netcat
poinformowałem, że wszystko było w porządku, ponieważ w teście podano adres źródłowy. Przejdę na używanie/dev/tcp
.źródło