Potrzebuję wiersza poleceń, który może sprawdzić stan portu na zdalnym hoście. Próbowałem, ping xxx.xxx.xxx.xxx:161
ale nie rozpoznaje „hosta”. Myślałem, że to „dobra” odpowiedź, dopóki nie wykonałem tego samego polecenia przeciwko hostowi, o którym wiem, że ten port jest otwarty. Dotyczy to pliku wsadowego w systemie Windows, który sprawdzi stan zdalnego portu, a następnie uruchomi polecenie wykorzystujące ten zdalny port do informacji, następnie ponownie polecenie zdalnego sprawdzania portu, a następnie polecenie używające tego portu na następnym serwerze w celu uzyskania informacji , i tak dalej. Szukałem wszędzie i pomyślałem, że ping może to zrobić, ale muszą istnieć różne wersje pinga, przypuszczam, że ponieważ serwer, na którym to robię, nie pokazuje tej opcji.
Dla chichotów wypróbowałem zdalny program do sprawdzania portów z poziomu witryny internetowej - i wyniki były poprawne zarówno dla serwera „problemowego”, jak i dla właściwego serwera. Jednak nie mogę tego użyć w trybie wsadowym z ponad 500 adresami IP serwerów.
Czy jest coś, co mogę zrobić, co jest proste? Moje umiejętności Perla są bardzo zardzewiałe (używaj go lub strać), nie znam żadnych innych języków opartych na systemie Windows poza wsadowymi. Unix to moja umiejętność, ale to musi być wykonane z Widows Server 2003.
źródło
ps> tnc xxx.xxx.xxx.xxx -port 161
Odpowiedzi:
Wygląda na to, że szukasz skanera portów, takiego jak nmap lub netcat , z których oba są dostępne dla systemów Windows, Linux i Mac OS X.
Na przykład sprawdź telnet na znanym adresie IP:
Na przykład poszukaj otwartych portów od 20 do 30 w witrynie host.example.com:
źródło
nc -zv host.example.com 20-30
. inaczej nie ma wyjścia-z
dlanc
nie jest dostępna w systemie Linux.W wierszu polecenia możesz użyć polecenia telnet .. Na przykład, aby połączyć się z adresem IP 192.168.10.1 z portem 80,
Aby włączyć telnet w Windows 7 i nowszych, kliknij . Z połączonego artykułu włącz telnet za pomocą panelu sterowania -> programy i funkcje -> funkcje systemu Windows -> klient telnet lub po prostu uruchom to w monicie administratora:
źródło
Dla celów skryptowych stwierdziłem, że to
curl
polecenie może to zrobić, na przykład:Prawdopodobnie może nie działać dla wszystkich usług, ponieważ
curl
w niektórych przypadkach może zwracać różne kody błędów (zgodnie z komentarzem), więc dodanie następującego warunku może działać w niezawodny sposób:Uwaga: Dodano,
-m5
aby ustawić maksymalny limit czasu połączenia na 5 sekund.Jeśli chcesz sprawdzić również, czy host jest ważny, musisz również sprawdzić
6
kod wyjścia:Aby rozwiązać problem z zwróconym kodem błędu, po prostu uruchom:,
curl host:port
np:Zobacz:
man curl
pełną listę kodów wyjścia.źródło
curl $IP:$PORT
daje:curl: (52) Empty reply from server
(w przeciwieństwiecurl: (7) Failed to connect
), ale podobnienc
, nie mogę| grep Empty
dla tych instrukcji wyjściowych, jak można by się spodziewać (coś o nowych wierszach lub braku natychmiastowego wyjścia?). Zakładam, że twoja linia jest warunkowa na podstawie kodu zakończenia, prawda? Jestem na El Cap; może w innych wersjach lub systemach operacyjnych-1
raczej kończy się stan awarii niż52
?curl -s $IP:$PORT >/dev/null; if [ $? -eq 52 ]; then echo "Connected."; else echo "Fail."; fi
Naciśnij Windows+ Rwpisz
cmd
iEnterW wierszu polecenia wpisz
Jeśli port nie jest otwarty, zostanie wyświetlony następujący komunikat:
W przeciwnym razie zostaniesz przeniesiony do otwartego portu (wyświetli się pusty ekran)
źródło
Użyj polecenia nc,
Możesz także użyć polecenia telnet
źródło
nc lub „netcat” ma również tryb skanowania, który może być przydatny.
źródło
Myślę, że szukasz Hping ( http://www.hping.org/ ), który ma wersję Windows.
Jest to również bardzo przydatne, jeśli chcesz zobaczyć, gdzie na trasie port TCP jest blokowany (na przykład przez zaporę ogniową), a ICMP może nie być.
źródło
W Bash możesz używać plików pseudourządzeń, które mogą otwierać połączenie TCP z powiązanym gniazdem. Składnia to
/dev/$tcp_udp/$host_ip/$port
.Oto prosty przykład, aby sprawdzić, czy Memcached działa:
Oto kolejny test, aby sprawdzić, czy określona witryna jest dostępna:
Aby uzyskać więcej informacji, zajrzyj do: Advanced Bash-Scripting Guide: Rozdział 29.
/dev
i/proc
.Powiązane: Sprawdź, czy port w systemie zdalnym jest osiągalny (bez telnetu) w SuperUser.
Aby uzyskać więcej przykładów, zobacz: Jak otworzyć gniazdo TCP / UDP w powłoce bash (artykuł).
źródło