Hallo zusammen,
folgende Idee: ich will die IP-Adressen von PCs überwachen lassen und wenn die PCs aus sind (nicht erreichbar) meine “Büroausstattung” (separate Switche, Drucker etc) abschalten lassen.
Das Abschalten ist einfach: fibaro Wall Plug dazwischen.
Jemand ne Idee oder nen bash Skript für Linux was als Auslöser dienen kann? (Server Ubuntu läuft rund um die Uhr )
Gruß
Jens
#!/bin/bash
while true; do
ping -c2 PC-IP
if [ $? -ne 0 ]
then
curl WEBHOOKURL
else
echo 'Rechner noch an'
fi
sleep 600
done
Checkt alle 600Sekunden(sleep 600) ob der Rechner mit der passenden IP noch pingbar ist. Er versucht es zwei mal (-c2)
Bei Fragen fragen.
1 „Gefällt mir“
Vielen lieben Dank. Bei mehreren ips verschachtelt? Oder kann ich die Abfrage auch auf 2-n ips machen?
Kommt drauf an was du machen willst.
Soll es nur ausgehen wenn alle aus sind?
Wenn alle Geräte von denen man druckt aus , dann Drucker aus. Wenn eines ein, dann Drucker ein
Hatte ich nicht gesehen im ersten post
#!/bin/bash
while true; do
sleep 10
ping -c2 192.168.2.212
if [ $? -eq 0 ]
then
continue
fi
ping -c2 192.168.2.213
if [ $? -eq 0 ]
then
continue
fi
curl WEBHOOK
done
Fuer jede IP Adresse kannst du diesen Block noch mal kopieren:
ping -c2 192.168.2.212
if [ $? -eq 0 ]
then
continue
fi
Sleep 10 wieder durch die Sekunden ersetzen die er warten soll
#!/bin/bash
ping -c2 192.168.2.212
if [ $? -eq 0 ]
then
active=1
fi
ping -c2 192.168.2.213
if [ $? -eq 0 ]
then
active++
fi
if [ $? -eq 0 ]
then
curl WEBHOOKAUS
else
curl WEBHOOKAN
fi
Muss das nicht etwa so sein? BASH ist nicht so meine Stärke :-/
Also mein Script faengt mit der ersten IP Adresse an. Sobald der erste PC an ist hoert sie auf.
Sollte der erste aus sein nimmt sie den zweiten. Sollte der zweite an sein hoert sie auf. Und so weiter und so fort.
Wenn man jetzt noch die PC die am haeufisten an sind ganz nach oben schreibt sollte es sogar recht effizient sein.
Zu deiner Loesung, wenn ein PC an ist soll ja nichts passieren, also auch kein Webhook.
if [ $? -eq 0 ]
then
curl WEBHOOKAUS
else
curl WEBHOOKAN
fi
Da sollte $? immer 0 sein da ja active++ wahrscheinlich immer erfolgreich ist.
Sorry, am Ende if [ active -eq 0 ]
vielleicht nochmal zu dem was ich vor habe:
Regelmässiger Check, ob PCs an sind. Wenn der letzte PC aus ist, soll der Wallplug ausgeschaltet werden, sobald der erste Rechner wieder an ist: eingeschaltet werden.
Also brauche ich auf jeden Fall die zwei Webhooks ( EIN und AUS). Meine Herausforderung ist, diese auch korrekt anzusteuern.
Wenn ich dein Skript (vielen Dank dafür), richtig verstehe, dann schaltet das ab, wenn kein Rechner mehr an ist.
Angepasst (natürlich mit wenn active > 0): Zähle eingeschaltete Rechner, wenn Anzahl 0 dann ausschalten, wenn > 0, dann einschalten.
Wenn ich das dann als CRON rein nehme, sollte das klappen, korrekt? Denn es sollte dann sowohl ein, als auch ausschalten.
Oh da habe ich deinen Post wohl gar nicht richtig gelesen.
Ja dann kannst du das so machen.
Ich würde nach oben noch ein active=0 machen damit du am Start sicher bist, nicht das es NONE oder so ist.
Und dann vielleicht überall active=1 oder active++ verwenden.
Sonst fragst du dich irgendwann warum es bei einem auf 1 gesetzt wird und bei dem anderen um 1 erhöht.