Hi.
Ok, ich habe gerade einen ersten Versuch gestartet, beide Scripte zu
vereinen! Die Parameterübergabe habe ich bisher nicht eingebaut. Mir
gefällt es im Moment noch besser mit _festen_ Variablen, die man ganz
oben einmal deklariert und fertig.
Das Script ist halbwegs fertig -- und kann in *diesem* Zustand gefahrlos
getestet werden, da es noch nicht "scharf gestellt ist" (ein echo-Befehl
zuviel). Eine Kleinigkeit ist aber seltsam: Ganz am Ende erscheint der
Befehl bei mir einmal zu oft. Warum?? Bash-Wizzards vor :)
Michael
-----------------------------------------------------------------------
#! /bin/bash
# Version 2.0 -- vom 12.02.2015
# Voraussetzung: In der start.conf.trusty714 --> Autostart abschalten!
# Danach laufen alle Clients bis zum LINBO-Startbildschirm hoch und
# warten auf ein serverseitiges "linbo-remote"
################################################################################################
# globale Deklarationen für die Räume:
ROOM1='raum1';
ROOM2='raum2';
ROOM3='lpc';
# Varianten zur Synchronisation:
command1="format,initcache:torrent,sync:1,sync:2,start:1";
command2="format,initcache:torrent,sync:1,sync:2,halt";
command3="initcache:torrent,sync:1,sync:2,start:1";
command4="sync:1,sync:2,halt";
# Hier die Ausnahmen deklarieren, die NICHT synchronisiert werden
# sollen:
# Mit Pipe getrennte Keywords die Drucker definieren
# (drucker, printers, whatever)
PRINTER_KEYWORDS='drucker|serverraum'
# Wartezeit zwischen den Zyklen
SECS=3
# Anzahl der Clients pro Zyklus
HOSTPERCYCLE=10
##################################################################################################
function what_to_do() {
PS3="Was soll alles gemacht werden: "
echo " ";
select auswahl2 in $command1 $command2 $command3 $command4 Ende
do
case "$auswahl2" in
"") echo "Ungültige Auswahl" ;;
$command1) command=$command1; break ;;
$command2) command=$command2; break ;;
$command3) command=$command3; break ;;
$command4) command=$command4; break ;;
*) echo "Ende"; exit 0 ;;
esac
done
}
function raum_sync() {
# IP Adressen abarbeiten, Vergleichen ob ein Zyklus (ungleich 0)
# betreten wurde, falls ja, dann mache eine Pause, falls nein, weitermachen
# die echo-Zeile kann durch einen entsprechenden Befehl angepasst werden
# - ${IP[$i]} gibt die IP an der Stelle $i im Array wieder
declare -a IP # Array mit IPs
# IP-Adressen raumbezogen aus workstations lesen und ins Array packen
IP=(`grep -Ev $PRINTER_KEYWORDS /etc/linuxmuster/workstations |grep
$ROOM |cut -d ";" -f 5`)
# Länge des IP Arrays
IP_LENGTH=${#IP[@]}
for i in `seq 0 $IP_LENGTH`
do
COMPARE=$(($i % $HOSTPERCYCLE))
if [ "$i" != "0" ] && [ "$COMPARE" == "0" ]
then
sleep $SECS
fi
#echo ${IP[$i]}
echo "linbo-remote -i ${IP[$i]} -c $command";
# sleep 2
done
}
###########################################################################
### Hauptmenu:
###########################################################################
echo "";
echo "**************************************************************";
echo "*** LINBO-REMOTE: Clients serverseitig synchronisieren ***";
echo "**************************************************************";
echo "";
PS3="Durch Tippen der Ziffer wählen: ";
echo "Welche Clients sollen synchronisiert werden?";
echo " ";
select auswahl in Raum1 Raum2 LehrerPCs Ende
do
case "$auswahl" in
"") echo "Ungültige Auswahl" ;;
Raum1) ROOM=$ROOM1; what_to_do; raum_sync; break ;;
Raum2) ROOM=$ROOM2; what_to_do; raum_sync; break ;;
LehrerPCs) ROOM=$ROOM3; what_to_do; raum_sync; break ;;
*) echo "Ende"; exit 0 ;;
esac
done
#EOF
-----------------------------------------------------------------------------------------
_______________________________________________
linuxmuster-user mailing list
[email protected]
https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user