Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Shell: Automatisches Abschalten Linux Server

Shell: Automatisches Abschalten Linux Server 8 Jahre 10 Monate her #6931

  • 1Pax
  • 1Paxs Avatar
  • Offline
  • menkiSys-Kunde
  • Beiträge: 7
  • Karma: 0
Hallo zusammen,

vll gibt es ja hier jemanden der mir helfen kann ;).

Ich nutze aktuell für meinen linux Fileserver folgendes Script, damit er sich automatisch ausschaltet.
#!/bin/sh
#
# (cc:by-sa) 2007 Marco Gabriel, http://www.marcogabriel.com/
#
# Powersaver.sh

###
# CONFIG
###

# Filename of the statusfile
STATUSFILE="/tmp/powersaver-status"

# which ip range should be checked?
# this example looks in "192.168.1.10 to 192.168.1.30" 
# and "192.168.178.10 to 192.168.178.30"
RANGE="192.168.1.11-14"

# how many clients are always on (other servers, routers, etc)
MINCLIENTS=0

# shutdown after how many retries?
RETRIES=2

###
# END CONFIG
###

NUMCLIENTS=`nmap -sP $RANGE -oG - | grep "^Host" | wc -l`

if [ $NUMCLIENTS -le $MINCLIENTS ]; then
    if [ ! -f "$STATUSFILE" ]; then
        echo "COUNT=$RETRIES" > $STATUSFILE
    fi
    . $STATUSFILE
    if [ $COUNT -le $MINCLIENTS ]; then
        echo "Shutdown, my dear..."
        shutdown -h now;
    else
        let COUNT=$COUNT-1
        echo "COUNT=$COUNT" > $STATUSFILE
    fi;
else
    if [ -f "$STATUSFILE" ]; then
        rm $STATUSFILE
    fi
fi

Link hier

nun ist es aber so, dass kürzlich eine Apple TV im Netzwerk hinzugekommen ist. dieser ist immer nur auf standby. folglich erkennt nmap ihn auch - auf sämtlichen ports - als online, somit schaltet sich der server nie aus.

Wenn das Apple TV allerdings im Standby ist, kann er mit einem simplen "ping" nicht erkannt werden -> timeout.

Frage ist also mehr oder weniger, wie krieg ich den ping befehl in dieses script, sodass trotzdem der Count in der "powersaver-status" weiter ordentlich läuft.

Das Ersetzen von
nmap -sP $RANGE -oG
durch ein simples
ping -c 2
funktioniert natürlich hinten und vorne nicht.

In einem Linux Forum habe ich folgenden Ansatz auf die schnelle geschickt bekommen:
#!/bin/bash
# shutdown if clients are offline

# array of client ips
scanips=(
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.11
)

# loop to look for online clients
for ip in ${scanips[@]}; do
  if ping -c 2 $ip; then
    echo "$ip is up. Exit scan."
    exit
  else
    echo "$ip is down. Continue scan."
  fi
  echo
done

# shutdown host
echo "Shutdown.

Allerdings wird hier nur einmal überprüft, man müsste also noch eine weitere Schleife um den Code bauen mit einem sleep befehl.
Leider habe ich von shell mal garkeine Ahnung, ausser den Code zu verstehen und ihn halbwegs auf meine Bedürfnisse anzupassen. Eigentlich würde ich gerne meinen jetzigen Code beibehalten.
Jemand da, der entsprechende Shell Programmierkentnisse hat und mir helfen kann?

Danke im vorraus
MfG,
muffi
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Shell: Automatisches Abschalten Linux Server 8 Jahre 10 Monate her #6934

  • 1Pax
  • 1Paxs Avatar
  • Offline
  • menkiSys-Kunde
  • Beiträge: 7
  • Karma: 0
keiner eine ahnung?
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: grogster
Ladezeit der Seite: 0.189 Sekunden