Verwenden Sie Powershell wie ein Profi

Verwenden Sie Powershell wie ein Profi

Was verwenden die Leute, wenn Telnet nicht installiert ist, um zu prüfen, ob ein Port geöffnet und erreichbar ist? Ich habe beispielsweise früher die Technik von verwendet telnet <destination>und wusste, dass er da war, auch wenn Telnet nicht mit dem System am anderen Ende interagieren konnte.

Unter Windows 2008 ist Telnet nicht installiert, daher bin ich etwas ratlos. Was kann ich also stattdessen verwenden? Und bitte auch etwas, falls es unter Linux oder Solaris nicht vorhanden ist.

Ich bin Berater und arbeite an verschiedenen Standorten. Aus verschiedenen Gründen (Zugriffsrechte, Änderungskontrollzeiten, wenn ich es installiere und es im nächsten Jahr jemand anderes verwendet, tragen wir eine gewisse Haftung usw.) kann ich es nicht auf dem Server einer anderen Person installieren. Aber ein USB-Stick oder ein anderes eigenständiges, nicht installiertes Tool wäre wunderbar ...

Antwort1

Verwenden Sie Powershell wie ein Profi


Basiscode

$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"
}

Einzeiler

PS C:\> test-netconnection -ComputerName 4.2.2.1 -Port 53

Wandeln Sie es in ein Cmdlet um

[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"
}

Als Skript speichern und jederzeit verwenden

Anschließend verwenden Sie den Befehl in Ihrer Powershell oder Eingabeaufforderung wie folgt:

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

oder

PS C:\> telnet.ps1 8.8.8.8 53

Antwort2

Hier sind verschiedene Möglichkeiten, einen TCP-Port ohne Telnet zu testen.

BASH(manpage)

# 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

# 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
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

# 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

verwandte Informationen