Самый легкий способ получить доступ графически к системе Linux при помощи VNC, часть сервера действительно легко установить (openSuse wiki обеспечивает информацию об этом здесь), и существует набор клиентской работы VNC окон, я обычно использую RealVNC. По моему скромному мнению, это было бы simpliest решением для Вас.
Вы не можете пинговать порты, так как Ping использует ICMP , который не имеет понятия портов. Порты принадлежат протоколам транспортного уровня , таким как TCP и UDP. Однако вы можете использовать nmap , чтобы узнать, открыты ли порты или нет
nmap -p 80 example.com
Изменить: Как упоминал Флокра, Nmap - это больше, чем просто пинг-для-портов. Это лучший друг аудиторов и хакеров, который предлагает массу интересных опций. Проверьте в документе все возможные флаги.
Нет, нельзя, потому что ping
использует протокол ICMP , который даже не имеет понятия портов.
Я совершенно уверен, что зонд 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
Нет.
Нет гарантии, что служба, запущенная на порту, распознает эхо-запрос. Это также открывает вопрос о том, какой «вкус» порта вы хотите пинговать, TCP или UDP? Поскольку "протокол" ping не использует ни того, ни другого (ping реализован с использованием ICMP ), это не имеет большого смысла.
Откройте сеанс telnet для определенного порта, например:
# telnet google.com 80
Trying 74.125.226.48...
Connected to google.com.
Escape character is '^]'.
Чтобы закрыть сеанс, нажмите Ctrl + ] .
Вы можете использовать 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
Если вы используете операционную систему * nix, попробуйте установить и использовать "zenmap", это графический интерфейс для nmap и имеет несколько полезных профилей сканирования, которые очень помогают новому пользователю.
Это единственное решение , которое работает для сетей 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 было более чем достаточно.
0 секунд на моем VPN казалось достаточно для стабильной работы, меньшее - не всегда (всегда) давало точные результаты. В моей локальной сети 0,5 было более чем достаточно. 0 секунд на моем VPN казалось достаточно для стабильной работы, меньшее - не всегда (всегда) давало точные результаты. В моей локальной сети 0,5 было более чем достаточно.Вот быстрое и грязное консольное приложение .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();
}
}
Для этого есть облегченный инструмент, называемый tcping: http://www.linuxco.de/tcping/tcping.html
Если вы используете установку Windows с powershell v4 или новее, вы можете использовать модуль powershell test-netconnection:
Test-NetConnection <host> -port <port>
Пример: Test-NetConnection example.com -port 80
Этот командлет также имеет псевдоним tnc
. Например, tnc example.com -port 80
Я нашел более простое решение, используя PsPing:
psping 192.168.2.2:5000
Это часть Windows Sysinternals.
PsPing реализует функциональность Ping, TCP ping, измерение задержек и пропускной способности.
Попробуйте команду curl
, например:
$ curl host:port
Например:
$ curl -s localhost:80 >/dev/null && echo Success. || echo Fail.
Success.
Вышеупомянутая команда вернет Fail для ненулевых кодов состояния выхода. . В некоторых конкретных случаях, таких как пустой или неверно сформированный ответ (см. man curl
), вы можете захотеть обработать определенные коды выхода как успешные, поэтому, пожалуйста, ознакомьтесь с этим сообщением для более подробного объяснения.
В оболочке 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
Похоже, что разумное предложение CMCDragonkai о nping не было превращено в правильный ответ.
nping example.com --tcp-connect -p 80,443