Ping auf einen TCP-Port

2009-05-12_tcpping.jpg Da soll also ein kritischer Server, der unter VMWare in der DMZ läuft, per VMotion verschoben werden. Nur wie wird das Ganze überwacht? Im Normalfall lasse ich hier einen Ping laufen, einfach um zu sehen, dass das Zielnetz auf dem neuen Host auch vernünftig durchgereicht wird und der Server durchgehend erreichbar bleibt. Per ICMP-Echo ist die gute Maschine in der DMZ aber nicht erreichbar, also per WHILE-Schleife ein »Ping« auf Port 80. So die einfache Idee, leicht erweitert sollte das folgende Script in keiner Tools-Sammlung fehlen:

tcpping.sh:

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
#!/bin/sh

if [ $# != 2 ]; then
        echo "Usage: $0 <HOST> <PORT>"
        exit 1
fi

i=0
while (true) do

        TIME=`date +%s%N| cut -c -13`
        SCAN=`nmap -P0 -p$2 $1`
        if [ $? != 0 ]; then exit 1; fi

        echo $SCAN |grep open >/dev/null
        if [ $? != 0 ]; then
                echo tcp ping from $1 port $2: tcp_seq\=$i time\=$(($((`date +%s%N| cut -c -13`-$TIME))))ms timeout
        else
                echo tcp ping from $1 port $2: tcp_seq\=$i time\=$(($((`date +%s%N| cut -c -13`-$TIME))))ms
        fi

        sleep 1
        i=$((i+1))

done

j-zero, der bei der Umsetzung geholfen hat, wird das Script sicherlich noch um das eine oder andere Feature erweitern.

You can follow any responses to this entry through the RSS 2.0 feed.