检查端口是否打开而没有telnet [关闭]


17

如果未安装Telnet来检查端口是否打开并且可访问,人们会使用什么?例如telnet <destination>,即使telnet无法与另一端的系统进行交互,我也曾经使用过并且知道它的技术。

由于没有安装Windows 2008 telnet,所以我有点迷路了。那我该怎么用呢。还有一些东西,如果它在Linux或Solaris中不存在的话。

我是在不同网站上工作的顾问。由于多种原因(访问权限,更改控制时间,如果我明年安装它而有人使用它会给我们带来一些责任等),所以无法在其他人的服务器上安装。但是,USB或其他自包含的未安装工具将是很棒的...


3
您为什么不安装它呢?
克里斯·麦基翁

或安装喜欢的事nmap...
etagenklo

尝试使用nmap
Zeeshan 2013年


Answers:


25

像老板一样使用Powershell


基本代码

$ipaddress = "4.2.2.1"
$port = 53
$connection = New-Object System.Net.Sockets.TcpClient($ipaddress, $port)

if ($connection.Connected) {
    Write-Host "Success"
}
else {
    Write-Host "Failed"
}

将其转换为cmdlet

[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True,Position=1)]
   [string]$ip,

   [Parameter(Mandatory=$True,Position=2)]
   [int]$port
)

$connection = New-Object System.Net.Sockets.TcpClient($ip, $port)
if ($connection.Connected) {
    Return "Connection Success"
}
else {
    Return "Connection Failed"
}

另存为脚本并一直使用

然后,您可以在powershell或cmd提示符中使用以下命令:

PS C:\> telnet.ps1 -ip 8.8.8.8 -port 53

要么

PS C:\> telnet.ps1 8.8.8.8 53


4
您也可以执行以下命令:New-Object System.Net.Sockets.TcpClient(“ IP或DomainName”,80)如果连接失败,则会收到错误消息;如果连接成功,则会显示有关已创建对象的信息。
Tsuushin

1
在关闭插座方面如何工作?例如,我知道是否打开对IIS的Web请求,但不关闭连接,它将达到限制,并且我将无法再进行测试。
Vasili Syrakis 2013年

好问题。我想它的作用与您的答案相同(因为您/我们不处理它或手动关闭插座);TcpClient应该在某个时间点收集垃圾,否则套接字将在此之前达到读取超时。只是一个猜测,还没有测试!
Tsuushin

1
如果您不想担心将套接字打开一段时间,可以执行以下操作:(New-Object System.Net.Sockets.TcpClient($ ip,$ port))。Close与以前相同;如果无法连接,则报错,但如果连接成功,它将打印出来,然后成功关闭端口:void Close()
Tsuushin

41

这是在没有telnet的情况下测试TCP端口的几种不同方法。

BASH手册页

# cat < /dev/tcp/127.0.0.1/22
SSH-2.0-OpenSSH_5.3
^C

# cat < /dev/tcp/127.0.0.1/23
bash: connect: Connection refused
bash: /dev/tcp/127.0.0.1/23: Connection refused


卷曲

# curl -v telnet://127.0.0.1:22
* About to connect() to 127.0.0.1 port 22 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 22 (#0)
SSH-2.0-OpenSSH_5.3
^C

# curl -v telnet://127.0.0.1:23
* About to connect() to 127.0.0.1 port 23 (#0)
*   Trying 127.0.0.1... Connection refused
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host


蟒蛇

# python
Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> clientsocket.connect(('127.0.0.1', 22))
>>> clientsocket.send('\n')
1
>>> clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> clientsocket.connect(('127.0.0.1', 23))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused


佩尔

# perl
use IO::Socket::INET;
$| = 1;
my $socket = new IO::Socket::INET(
  PeerHost => '127.0.0.1',
  PeerPort => '22',
  Proto => 'tcp',
);
die "cannot connect to the server $!\n" unless $socket;
print "connected to the server\n";
^D
connected to the server

+1没有意识到curl方法,非常酷!:)
blong
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.