Ping определенный порт

Просто быстро проверив проверку.

Вы можете выполнить ping определенный порт машины, и если да, можете ли вы привести пример?

Я ищу что-то вроде ping ip address portNum.

558 голосов | спросил Davie 8 +04002009-10-08T13:57:50+04:00312009bEurope/MoscowThu, 08 Oct 2009 13:57:50 +0400 2009, 13:57:50

18 ответов


609

Вы не можете пинговать порты, поскольку Ping использует ICMP , который не имеет концепции портов. Порты относятся к протоколам транспортного уровня , таким как TCP и UDP. Однако вы можете использовать nmap , чтобы узнать, открыты ли порты или нет.

nmap -p 80 example.com

Изменить: Как упоминалось в flokra, nmap - это больше, чем просто ping-for-ports-thingy. Это лучшие аутсайдеры и хакеры безопасности, а также множество отличных вариантов. Проверьте документ для всех возможных флагов.

ответил sfussenegger 8 +04002009-10-08T14:00:00+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:00:00 +0400 2009, 14:00:00
162

Откройте сеанс telnet для определенного порта, например:

# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.

Чтобы закрыть сеанс, нажмите Ctrl + ] .

ответил 8 +04002009-10-08T14:01:02+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:01:02 +0400 2009, 14:01:02
78

Вы можете использовать PaPing:

http://code.google.com/p/paping

C:\>paping.exe www.google.com -p 80 -c 4
paping v1.5.1 - Copyright (c) 2010 Mike Lovell

Connecting to www.l.google.com [209.85.225.147] on TCP 80:

Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=25.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80
Connected to 209.85.225.147: time=24.00ms protocol=TCP port=80

Connection statistics:
        Attempted = 4, Connected = 4, Failed = 0 (0.00%)
Approximate connection times:
        Minimum = 24.00ms, Maximum = 25.00ms, Average = 24.25ms
ответил 3 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 03 Sep 2010 08:23:37 +0400 2010, 08:23:37
71
$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
ответил Rahul Patil 10 AMpWed, 10 Apr 2013 05:55:46 +040055Wednesday 2013, 05:55:46
53

Если вы работаете с установкой Windows с powershell v4 или новее, вы можете использовать модуль powershell test-netconnection:

Test-NetConnection <host> -port <port>

Пример:      Test-NetConnection example.com -порт 80

Этот командлет также имеет псевдоним tnc. Например tnc example.com -port 80

ответил Kjetil Limkjær 27 +03002014-10-27T00:09:23+03:00312014bEurope/MoscowMon, 27 Oct 2014 00:09:23 +0300 2014, 00:09:23
22

Нет, вы не можете, потому что ping использует ICMP протокол , который даже не имеет понятия о портах.

ответил 8 +04002009-10-08T14:00:36+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:00:36 +0400 2009, 14:00:36
15

Попробуйте выполнить команду curl, например:

$ curl host:port

Например:

$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.

Выше команда вернет Fail на ненулевые коды статуса выхода. В некоторых частных случаях, таких как пустой или некорректный ответ (см. man curl), вы можете обработать определенные коды выхода как успешные, поэтому, пожалуйста, проверьте этот для более подробного объяснения.

ответил kenorb 1 72015vEurope/Moscow11bEurope/MoscowSun, 01 Nov 2015 03:11:59 +0300 2015, 03:11:59
15

Я нашел более простое решение, используя PsPing:

psping 192.168.2.2:5000

Это часть Windows Sysinternals .

  

PsPing реализует функции Ping, TCP-пинг, задержку и измерение полосы пропускания.

ответил Ayan Mullick 12 FriEurope/Moscow2014-12-12T22:49:13+03:00Europe/Moscow12bEurope/MoscowFri, 12 Dec 2014 22:49:13 +0300 2014, 22:49:13
13

В Linux вы можете использовать hping , но он использует TCP, а не ICMP.

hping example.com -S -V -p 80
ответил c4f4t0r 23 MonEurope/Moscow2013-12-23T03:12:44+04:00Europe/Moscow12bEurope/MoscowMon, 23 Dec 2013 03:12:44 +0400 2013, 03:12:44
10

Ping очень специфичен, но если вы хотите проверить, открыт ли порт или нет, и запускается окно Windows, то PortQry является вашим другом.

Я использовал его только для тестирования контроллеров домена для проблем с подключением, но он работал для этого, поэтому должен работать на вас.

ответил Rob 8 +04002009-10-08T14:06:28+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:06:28 +0400 2009, 14:06:28
7

Вот быстрое и грязное консольное приложение .NET:

    static void Main(string[] args)
    {
        string addressArgument = null, portArgument = null;

        System.Net.Sockets.TcpClient tcpClient = null;

        try
        {
            addressArgument = args[0];
            portArgument = args[1];

            int portNumber;
            portNumber = Int32.Parse(portArgument);

            tcpClient = new System.Net.Sockets.TcpClient();
            tcpClient.ReceiveTimeout = tcpClient.SendTimeout = 2000;


            IPAddress address;
            if (IPAddress.TryParse(args[0], out address))
            {
                var endPoint = new System.Net.IPEndPoint(address, portNumber);
                tcpClient.Connect(endPoint);
            }
            else
            {
                tcpClient.Connect(addressArgument, portNumber);
            }

            Console.WriteLine("Port {0} is listening.", portArgument);
        }
        catch (Exception e)
        {
            if (e is SocketException || e is TimeoutException)
            {
                Console.WriteLine("Not listening on port {0}.", portArgument);
            }
            else
            {
                Console.WriteLine("Usage:");
                Console.WriteLine("    portquery [host|ip] [port]");
            }
        }
        finally
        {
            if (tcpClient != null)
                tcpClient.Close();
        }
    }
ответил Luke Puplett 9 J000000Monday12 2012, 21:53:36
4

Нет.

Нет гарантии, что служба, работающая на порту, понимает ping. Это также открывает вопрос о том, какой «вкус» порта вы хотите выполнить ping, TCP или UDP? Поскольку протокол ping не использует ни один (ping реализован с использованием ICMP ), он не имеют большой смысл.

ответил unwind 8 +04002009-10-08T14:00:13+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:00:13 +0400 2009, 14:00:13
4

Это решение , которое работает для VPN с клиентской машиной Windows Vista или Windows 7 , поскольку другие перечисленные ответы просто не работают. Этот ответ был ранее удален и не должен был быть, поскольку это единственное решение для обычного случая в реальном мире. Поскольку для удаления нет апелляции, я отправляю его, чтобы сохранить других, разочарование, которое я испытывал, пытаясь использовать другие ответы.

В приведенном ниже примере показано, какие IP-адреса в VPN, которые имеют VNC /порт 5900, открыты с клиентом, работающим в Windows 7.

Короткий сценарий Python (v2.6.6) для сканирования данного списка IP-адресов и портов:

from socket import *

fTimeOutSec = 5.0
sNetworkAddress = '192.168.1'
aiHostAddresses = range(1,255)
aiPorts = [5900]

setdefaulttimeout(fTimeOutSec)
print "Starting Scan..."
for h in aiHostAddresses:
    for p in aiPorts:
        s = socket(AF_INET, SOCK_STREAM)
        address = ('%s.%d' % (sNetworkAddress, h))
        result = s.connect_ex((address,p))
        if ( 0 == result ):
            print "%s:%d - OPEN" % (address,p)
        elif ( 10035 == result ):
            #do nothing, was a timeout, probably host doesn't exist
            pass
        else:
            print "%s:%d - closed (%d)" % (address,p,result)

        s.close()
print "Scan Completed."

Результаты выглядели так:

Starting Scan...
192.168.1.1:5900 - closed (10061)
192.168.1.7:5900 - closed (10061)
192.168.1.170:5900 - OPEN
192.168.1.170:5900 - closed (10061)
Scan Completed.

Четыре переменных в верхней части должны быть изменены, чтобы они соответствовали требуемым тайм-ауту, сети, хостам и портам. 5,0 секунд на моей VPN, казалось, было достаточно, чтобы работать должным образом последовательно, меньше (всегда) не давали точных результатов. В моей локальной сети 0.5 было более чем достаточно.

ответил Mark Ribau 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 15 Sep 2011 08:58:22 +0400 2011, 08:58:22
3

Я абсолютно уверен, что Nagios check_tcp зонд делает то, что вы хотите. Их можно найти здесь и хотя они предназначены для использования в контексте Nagios, все они автономные программы.

$ ./check_tcp -H host -p 22
TCP OK - 0.010 second response time on port 22|time=0.009946s;0.000000;0.000000;0.000000;10.000000
ответил fvu 8 +04002009-10-08T14:22:26+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:22:26 +0400 2009, 14:22:26
1

Для него есть инструмент lightweigth, называемый tcping: http: //www.linuxco. де /tcping /tcping.html

ответил Craig 27 +03002014-10-27T01:08:22+03:00312014bEurope/MoscowMon, 27 Oct 2014 01:08:22 +0300 2014, 01:08:22
1

В оболочке Bash вы можете использовать TCP файл псевдо-устройства , например:

</dev/tcp/serverfault.com/80 && echo Port open || echo Port closed

Вот версия, реализующая тайм-аут 1 секунды:

timeout 1 bash -c "</dev/tcp/serverfault.com/81" && echo Port open || echo Port closed
ответил kenorb 20 +03002016-10-20T18:29:42+03:00312016bEurope/MoscowThu, 20 Oct 2016 18:29:42 +0300 2016, 18:29:42
0

Если вы используете операционную систему * nix, попробуйте установить и использовать «zenmap», это графический интерфейс для nmap и имеет несколько полезных профилей сканирования, которые отлично помогают новому пользователю.

ответил 25 J0000006Europe/Moscow 2011, 02:41:53
-1

Мне повезло в google для «создания определенного порта»: http://philwilks.blogspot.com/2008/01/ping-specific-port.html , так что НЕТ, вы не можете пинговать определенный порт

вы можете использовать nmap: nmap -p <port> <host>

ответил knittl 8 +04002009-10-08T14:00:43+04:00312009bEurope/MoscowThu, 08 Oct 2009 14:00:43 +0400 2009, 14:00:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132