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
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