[Q] Prüfung ob Server online alle 30 sec.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
cmonty
Beiträge: 21
Registriert: 21.05.2011 14:07:49

[Q] Prüfung ob Server online alle 30 sec.

Beitrag von cmonty » 02.05.2014 19:22:05

Hallo!

Ich benötige Hilfe für den korrekten Syntax des Bash Scripts, das folgende Aufgabe erfüllen soll:
- Es soll alle 30 sec. geprüft werden, ob der Server 1.2.3.4 online ist. In einem Informationsfenster soll ein Countdown angezeigt werden.
- Wenn nach x Prüfungen der Server immer noch offline ist, soll eine entsprechende Fehlermeldung zurückgegeben werden.
- Wenn der Server dagegen nach 1-x Prüfungen online ist, dann soll rsync von Remote-Verzeichnis mit lokalem Verzeichnis und Remmina ausgeführt werden.

Ich habe bisher dieses Coding "zusammengestellt":

Code: Alles auswählen

#!/bin/bash
#
#set -x

. /etc/vpn-connection.conf

logit() {
  logger -p local0.notice -s -- VPN-Connect: $*
}

StartRemmina() {
  remmina -c /home/${SYNC_USER}/.remmina/${REMMINA_CONFIG}
  logit Remmina started with config file
}

SyncDirectory() {
  rsync --delete \
        -avzbe ssh ${SYNC_USER}@${REMOTE_SERVER}:${SOURCE_DIR}/ ${DESTINATION_DIR}/ \
        --backup-dir=${BACKUP_DIR}
  logit Sync of directory Steuer-Sparbuch executed
}

DisplayMessage() {
COUNT=CHECK_REPEAT*CHECK_WAITTIME
START=${COUNT}                                             # Set a start point

until [ "${COUNT}" -eq "0" ]; do                           # Countdown loop.
  ((COUNT-=1))                                             # Decrement seconds.
  PERCENT=$((100-100*COUNT/START))                         # Calc percentage.
  echo "#Verbleibende Zeit$(echo "obase=60;$COUNT" | bc)"  # Convert to H:M:S.
  echo ${PERCENT}                                          # Outut for progbar.
  sleep 1
done | zenity --title "Countdown Start Remote-Server" \
              --progress \
              --percentage=0 \
              --text=""\
              --window-icon=${ICON} \
              --auto-close                                 # Progbar/time left.
if [ $? = 1 ]; then 
  exit $?; 
fi
notify-send -i $ICON "Countdown > ## Zeit ist abgelaufen ##"         # Attention finish!
#/usr/bin/canberra-gtk-play --volume 4 -f ${SOUND}          # Ding-dong finish!
zenity --notification \
       --window-icon="${ICON}" \
       --text "Countdown > ## Zeit ist abgelaufen ##"                   # Indicate finished!
}

# Checking if Remote-Server is online
repeat=${CHECK_REPEAT}

while :; do
# If online then start Remmina and sync directory
  nc -4nz -w 1 ${1:-192.168.178.10} ${2:-22} && \
  SyncDirectory && \
  sleep 2 && \
  StartRemmina
  DisplayMessage
  repeat=$((repeat - 1))
  test $repeat -gt 0 || logit Remote-Server is offline && exit
  sleep ${CHECK_WAITTIME}
done
Ich bin aber nicht zu 100% zufrieden mit diesem Script.
So wird nach meinem Verständnis der Countdown auch dann noch angezeigt, wenn der Server schon längst online ist.

Für jede Unterstützung bin ich dankbar.

THX

Antworten