BATch-Dateien - andere Kommandozeilentools

Auswahl weiterer Kommandozeilentools, die nicht zum Umfang von MS Windows gehören.

Liste weiterer Kommandozeilentools

In dieser Rubrik werden verschiedene Kommandozeilentools aufgelistet, die sich ebenso in Batch-Dateien verwenden lassen. Es sind zumeist Portierungen bekannter Unix-Kommandozeilentools oder aber Freeware für Windows.
Alle genannten Programme gehören nicht(!) zum Umfang von MS Windows.

nc

Übersicht

Befehl
Name
Kurzbeschreibung
Autor
Webseite
Lizenz
Syntax
Beispiele
     Netcat - Check von Ports auf verschiedenen Servern
Links


Befehlnc
NameNetCat
KurzbeschreibungSchweizer Armeemesser für TCP/IP
Autor
Webseitehttp://netcat.sourceforge.net/
LizenzGNU
Syntax
connect to somewhere:   nc [-options] hostname port[s] [ports] ...
listen for inbound:     nc -l -p port [options] [hostname] [port]
options:
        -d              detach from console, background mode

        -e prog         inbound program to exec [dangerous!!]
        -g gateway      source-routing hop point[s], up to 8
        -G num          source-routing pointer: 4, 8, 12, ...
        -h              this cruft
        -i secs         delay interval for lines sent, ports scanned
        -l              listen mode, for inbound connects
        -L              listen harder, re-listen on socket close
        -n              numeric-only IP addresses, no DNS
        -o file         hex dump of traffic
        -p port         local port number
        -r              randomize local and remote ports
        -s addr         local source address
        -t              answer TELNET negotiation
        -u              UDP mode
        -v              verbose [use twice to be more verbose]
        -w secs         timeout for connects and final net reads
        -z              zero-I/O mode [used for scanning]
port numbers can be individual or ranges: m-n [inclusive]
Beispiele

Netcat - Check von Ports auf verschiedenen Servern

Um einen TCP Port auf einem Host zu prüfen, ist die

allg. Syntax:
nc -zv %host% %port%

Den Parameter -z verwendet man für den Portscan; -v für eine sinnvolle Ausgabe.

Ein Beispiel:
# nc -zv www.axel-hahn.de 80
www.axel-hahn.de [81.169.145.89] 80 (http) open

Ich will aber mehrere Server auf versch. offene Ports testen:
Mit einer kleinen Config und einem Loop darüber mit Hilfe einer FOR-Anweisung, kann man sich einen schnellen Server-Check zusammenbauen. Klein deshalb, weil der Check sequentiell erfolgt und damit allenfalls kleinste Monitoring Aufgaben übernehmen kann.

Die Config ist wie folgt aufgebaut: Angegeben werden Hostname, Portnummer und ein Beschreibungstext. Trennzeichen ist ":". Am Zeilenanfang geschriebene "#" sind Kommentare.
Dateiname ist tests.txt - oder man passt es im darunter folgenden Skript in der Zeile
set cfg=tests.txt
an.

Config:
# ----------------------------------------------------------------------
# Konfiguration fuer den Portchecker
# Syntax
# hostname:port:label
# ----------------------------------------------------------------------
ftp.example.com:21:FTP-Server erreichbar
ssh.example.com:22:SSH erreichbar
telnet.example.com:25:Telnet-Dienst erreichbar
webserver01.example.com:80:Webseite ist erreichbar
ssl.example.com:443:SSL-Webseite ist mit https erreichbar
mysql.example.com:3306:Mysql-Server ist erreichbar
# ----------------------------------------------------------------------

Und hier ein Skript mit Loop über diese Config und einem Portcheck je Zeile. Als kleines Gimmick erfolgt die Ausgabe in (unvollständigem) HTML und farblicher Hervorhebung.

@echo off
rem ======================================================================
::
::  PORTCHECKER MIT NETCAT
::
rem ----------------------------------------------------------------------
::  2010-02-17  Axel Hahn
rem ======================================================================

set cfg=tests.txt
set tmp=%temp%/tests.tmp
set htm=%temp%/tests.html

rem --- html vorbereiten
echo.>%htm%
echo ^<style^> >>%htm%
echo .error{background:#fcc} >>%htm%
echo .ok{background:#4c4} >>%htm%
echo ^</style^> >>%htm%
echo ^<h1^>Port-Checker - >>%htm%
date /t >>%htm%
time /t >>%htm%
echo ^</h1^> >>%htm%

for /F "tokens=1,2,* delims=:" %%a in ('findstr /v "^#" %cfg%') do call :porttest %%a %%b "%%c"
start %htm%
pause && exit
 

:porttest
set host=%1
set port=%2
set label=%~3

nc -v -z %host% %port% 2>&1 | findstr /v "11004" | findstr "open$" 2>&1 >%tmp% && goto OK
echo FEHLER: %host%:%port% - %label%
echo ^<span class=error^>FEHLER: %host%:%port% - %label% >>%htm%
goto log 

:ok
echo OK: %host%:%port% - %label%
echo ^<span class=ok^>OK: %host%:%port% - %label% >>%htm%
goto log

:log
echo ^</span^>^<br^> >>%htm%
goto eof

:eof

LinksBeispiele: http://www.remoteshell-security.com/netcat.php
Tutorial: http://www.administrator.de/Netcat_-_The_TCP|IP_Swiss_Army_Knife.html

Übersicht