Можно ли вы пинговать конкретный порт машины, и если да, то можете ли вы привести пример?
Ищу что-то вроде ping ip address portNum.
Ответ 1
Нельзя пинговать порты, так как Ping использует ICMP, который не имеет понятия о портах. Порты относятся к протоколам транспортного уровня, таким как TCP и UDP. Однако вы можете использовать nmap, чтобы узнать, открыты ли порты или нет.
nmap -p 80 example.com
Как уже упоминалось, nmap - это больше, чем просто пинг-для-портов. Это лучший друг аудиторов и хакеров, который предлагает массу интересных опций. Проверьте в документации все возможные флаги.
Ответ 2
Откройте сеанс telnet для определенного порта, например:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
Ответ 3
Если вы используете Windows с PowerShell v4 или новее, вы можете использовать модуль PowerShell test-netconnection:
Test-NetConnection <host> -port <port>
Ответ 4$ nc -vz google.com 80
Connection to google.com 80 port [tcp/http] succeeded!
Ответ 5
Можно использовать 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
Ответ 6
Попробуйте curl команду, например:
$ curl host:port
Например:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
Вышеупомянутая команда вернет Fail при ненулевых кодах статуса выхода. В некоторых конкретных случаях, таких как пустой или искаженный ответ.
Ответ 7
Нет, нельзя, потому что ping использует протокол ICMP , в котором даже нет понятия портов.
Ответ 8
Я нашел более простое решение с помощью PsPing:
psping 192.168.2.2:5000
Это часть Windows Sysinternals .
PsPing реализует функции Ping, TCP ping, измерение задержки и пропускной способности.
Ответ 9
В Linux вы можете использовать hping, он использует TCP, а не ICMP.
hping example.com -S -V -p 80
Ответ 10
Ping очень специфичен, но если вы хотите проверить, открыт ли порт или нет, и используете ли вы окно Windows, тогда PortQry - ваш друг.
Я использовал его только для тестирования контроллеров домена на предмет проблем с подключением, он сработал, поэтому должен сработать и у вас.
Ответ 11
Вот консольное приложение .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();
}
}
Ответ 12
Пример ниже находит, какие 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 "Запуск сканирования..."
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 ):
# вышло время запроса - выход
else:
print "%s:%d - closed (%d)" % (address,p,result)
s.close()
print "Сканирование завершено."
Запуск сканирования…
Возможный результат:
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)
Сканирование завершено.
Четыре переменные в верхней части нужно будет изменить, чтобы они соответствовали таймауту сети, хостам и портам, которые необходимы. 5,0 секунд, на моей VPN, казалось, будет достаточно для стабильной работы, но не всегда давало точные результаты. В моей локальной сети 0,5 было более чем достаточно.
Ответ 13
В оболочке Bash вы можете использовать pseudo-device file 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
Ответ 14
Если вы используете операционную систему * nix, попробуйте установить и использовать «zenmap», это графический интерфейс для nmap и несколько полезных профилей сканирования, которые очень помогают новому пользователю.
Web