Da die Wohnung hier recht groß und die Zwischenwände sehr dick (>45cm) sind, habe ich zwei Wifi-Repeater eingesetzt. Sehr häufig kommt es vor, das einer nicht mehr zu erreichen ist. Das ist ärgerlich für die Mitnutzer, da ich das selbst nur mal mitbekomme wenn ich als Langeweile im LAN herum-Pinge oder mir bescheid gegeben wird.

Soweit für mich ganz eigentlich kein Problem. Aber irgendwie wurmte es mich doch. Hatte überlegt mit Kanonen auf Spatzen zu Ballern und ein Nagios aufzusetzen. Aber da ich ja schon mal mit Telegram-Bots gespielt habe, fand ich meine Spontan-Quick’n’Dirty-Idee akzeptabel.

In Telegram sucht ihr nach @BotFather um dort einen neuen Bot mit /newbot besorgen. Anschließend werden euch die IDs angezeigt. Desweiteren benötigt ihr die Chat-ID davon, wo die Nachrichten hingesendet werden sollen. Da ich vor 2 Jahren mal einen FTP-Bot erstellt und ein wenig damit herumgespielt hatte, hatte ich die Chat-ID noch im alten Script. kA wie ich die damals herausbekommen und das ganze erstellt hatte. Aber da steht wohl, wie es geht. Das Script an und für sich ist recht simpel und tut, -für mich- was es soll.

root@router:~# cat pingbot.sh

#!/bin/ash
bot=“bot11638xxxxx3:AAGtxxxxxE7xxKtf8d8tjOHQRiWxxx“
chatid=“1557xxxx“
two=10.0.0.2
three=10.0.0.3
four=10.0.0.4
google=8.8.8.8
dns=10.0.0.53
proxmox=10.0.0.150

offtexttwo=“Repeater Flur nicht mehr erreichbar!“
offtextthree=“Repeater Balkon nicht mehr erreichbar!“
offtextfour=“Router Balkon nicht mehr erreichbar!“
offtextgoogle=“Google DNS nicht mehr erreichbar!“
offtextdns=“PiHole nicht mehr erreichbar!“
offtextproxmox=“Proxmox nicht mehr erreichbar!“

### 10.0.0.2
if ping -c2 -t1 $two > /dev/null; then
echo „IP $two is online“
else
curl -s -X POST „https://api.telegram.org/$bot/sendMessage“ -d „chat_id=$chatid&text=$offtexttwo“ > /dev/null
echo „IP $two is offline“
fi

### 10.0.0.3
if ping -c2 $three > /dev/null; then
echo „IP $three is online“
else
curl -s -X POST „https://api.telegram.org/$bot/sendMessage“ -d „chat_id=$chatid&text=$offtextthree“ > /dev/null
echo „IP $three is offline“
fi

### 10.0.0.4
if ping -c2 $three > /dev/null; then
echo „IP $four is online“
else
curl -s -X POST „https://api.telegram.org/$bot/sendMessage“ -d „chat_id=$chatid&text=$offtextfour“ > /dev/null
echo „IP $four is offline“
fi

### 10.0.0.53
if ping -c2 $dns > /dev/null; then
echo „IP $dns is online“
else
curl -s -X POST „https://api.telegram.org/$bot/sendMessage“ -d „chat_id=$chatid&text=$offtextdns“ > /dev/null
echo „IP $dns is offline“
fi

### Proxmox
if ping -c2 $proxmox > /dev/null; then
echo „IP $proxmox is online“
else
curl -s -X POST „https://api.telegram.org/$bot/sendMessage“ -d „chat_id=$chatid&text=$offtextproxmox“ > /dev/null
echo „IP $proxmox is offline“
fi

### 8.8.8.8
if ping -c2 $google > /dev/null; then
echo „IP $google is online“
else
curl -s -X POST „https://api.telegram.org/$bot/sendMessage“ -d „chat_id=$chatid&text=$offtextgoogle“ > /dev/null
echo „IP $google is offline“
fi

(die „ und “ sind normale Anführungszeichen!)
root@router:~#

Wie ihr seht, läuft das auf meinen OpenWRT-Router ganz ausgezeichnet. Okay, wenn 8.8.8.8 nicht mehr erreichbar ist, wird mich da vermutlich keine Meldung erreichen, weil dann ganz eventuell das Internet hier weggebrochen ist, aber hab es mal mit hereingenommen :)

 

Zum testen mal die IPs etwas abgeändert. In der Shell dann so:

Und halt in Telegram:

Der Cronjob dazu:
*/1 * * * * ash /root/pingbot.sh

Kann man Ggf. auf 5 Minuten setzen. Muss mal schauen, wie sich das so verhält :-)

Flattr this!