텔넷없이 포트가 열려 있는지 확인


17

Telnet이 설치되어 있지 않고 포트가 열려 있고 연결 가능한지 확인하기 위해 사람들이 사용하는 것은 무엇입니까? 예를 들어 telnet <destination>, 텔넷이 다른 쪽의 시스템과 상호 작용할 수없는 경우에도 기술을 사용하고 있었습니다.

Windows 2008에서는 텔넷이 설치되어 있지 않아서 약간 길을 잃었습니다. 그래서 대신에 무엇을 사용할 수 있습니까? 그리고 리눅스 나 솔라리스에없는 것도 마찬가지입니다.

저는 다른 사이트에서 일하는 컨설턴트입니다. 여러 가지 이유로 (액세스 권한, 변경 시간 변경, 내년에 누군가가 그것을 사용하는 경우 우리는 약간의 책임이 있습니다) 다른 사람의 서버에 설치할 수 없습니다. 그러나 USB 또는 기타 자체 포함, 설치되지 않은 도구는 훌륭 할 것입니다 ...


3
왜 그냥 설치하지 않습니까?
Chris McKeown

또는 nmap...
etagenklo



답변:


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 or DomainName", 80)을 실행할 수도 있습니다. 연결할 수 없으면 오류가 발생하거나 연결에 성공하면 생성 된 개체에 대한 정보가 표시됩니다.
Tsuushin

1
소켓을 닫는 관점에서 어떻게 작동합니까? 예를 들어 IIS에 대한 웹 요청을 열지 만 연결을 닫지 않으면 제한에 도달하여 더 이상 테스트 할 수 없습니다.
Vasili Syrakis

좋은 질문. 나는 그것이 당신의 대답과 똑같은 일을한다고 상상합니다 (당신이 그것을 처리하거나 소켓을 수동으로 닫지 않기 때문에); TcpClient는 어느 시점에서 가비지 수집을 수행해야합니다. 그렇지 않으면 소켓이 읽기 시간 초과에 도달합니다. 그냥 추측, 테스트하지 않았습니다!
Tsuushin

1
소켓을 잠시 동안 열어 두는 것에 대해 걱정하지 않으려면 다음과 같이하십시오 : (New-Object System.Net.Sockets.TcpClient ($ ip, $ port)). 연결할 수없는 경우 오류가 발생하지만 연결되면 포트를 닫은 경우 출력됩니다. void Close ()
Tsuushin

41

텔넷없이 TCP 포트를 테스트하는 여러 가지 방법이 있습니다.

배쉬 ( man page )

# 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 컬 방법을 몰랐다, 매우 시원하다! :)
blong
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.