RSS
 

Posts Tagged ‘Netzwerk’

Ping auf einen TCP-Port

12 Mai

Mahlzeit,

wie von schmidt24 schon angekündigt habe ich das tcpping-Skript ein wenig erweitert, da ich finde, das Timeouts nicht markant genug dargestellt wurden, habe ich diese in rot und erfolgreiche Pings durch ein grünes “ok” markiert.

Zudem ist es nun möglich, anstatt des Ports den Namen aus der /etc/services anzugeben (falls man z.B. mal den Port von IMAPS nicht im Kopf hat).

Beispiel: “tcpping.sh 127.0.0.1 imaps” ist equivalent zu “tcpping.sh l27.0.0.1 993″.
Der Standardport ist auch nun 22, also SSH da dieser ja meist auf Linux/UN*X Maschinen auf ist.
Man kann also einfach “tcpping.sh 127.0.0.1″ nutzen und es wird automatisch auf SSH geprüft.
Die Namens- und Portauflösung sind nur eine nette Spielerei aber für den ein oder anderen Skripter vielleicht ganz nützlich. :)

Hier ist es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh

i=0

if [ $# = 1 ]; then PORT=22
else PORT=$2
fi

if [ $# -eq 0  ]; then
    echo "Usage: $0 <HOST> [PORT]"
    echo "   PORT can be numeric or name from /etc/services"
    echo "   Default port is 22 (ssh)"
    exit 1
fi

if [ $(echo "$1." | grep -E "([0-9]{1,3}\.){4}") ]; then
    HOST=$(host -v $1 | grep -1 -m1  -A1 ";; ANSWER SECTION" | awk '{print $5}' | awk NF | sed 's/\.$//')
    IP=$1
else
    IP=$(host -v $1 | grep -i -m 1 -A1 ";; ANSWER SECTION" | awk '{print $5}' | awk NF | sed 's/\.$//')
    HOST=$1
fi

case $PORT in
    *[!0-9]* )  PORT=$(cat /etc/services | grep -i -m 1 $PORT | awk '{print $2}' | sed "s/\/tcp//g")
esac

PROTO=$(cat /etc/services | grep -i -m 1 $PORT | awk '{print $1}' | sed "s/\/tcp//g")

while (true) do
        TIME=`date +%s%N| cut -c -13`
        SCAN=`nmap -P0 -p$PORT $1`
        if [ $? != 0 ]; then exit 1; fi
        echo $SCAN | grep -q open
        if [ $? != 0 ]; then
                echo "tcp ping from $HOST ($IP) port $PORT ($PROTO): tcp_seq=$i time=$(($((`date +%s%N| cut -c -13`-$TIME))))ms\t[\033[1;31mtimeout\033[0m]"
        else
                echo "tcp ping from $HOST ($IP) port $PORT ($PROTO): tcp_seq=$i time=$(($((`date +%s%N| cut -c -13`-$TIME))))ms\t[\033[1;32mok\033[0m]"
        fi
        sleep 1
        i=$((i+1))
done

viel spaß und erfolg damit.

Known Bugs:

  • Wenn als Host ein Nmap Parameter übergeben wird wie z.B: “–help” ist der Ping “[ok]“, da Nmap die Hilfe ausgibt, “grep -q open” ist in dem Fall Wahr, da auch in der Help ein “open” vorkommt.
  • Die Domainauflösung zur IP funktioniert zurzeit nicht bei einem Alias, da dann als erstes Ergebnis von “host” der CNAME zurückgeliefert wird.

Wenn jemand eine Idee hat, wie das zu lösen ist (bevor ich eine habe oder das ganze Ding in Perl implementiere) wäre ich dankbar.

bis neulich

j-zero

 
 

Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, sie davor zu schützen. Dies ist im beidseitigen Interesse, da unnötige Angstzustände bei Ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsüchtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Mehr Informationen unter www.politiker-stopp.de.