-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi.
Ich habe (nachdem ich in Jeskos Firefox-Script gesehen habe, wie
einfach es geht...) gerade ein neues Script für den Server gebastelt,
welches folgenden Sinn und Zweck erfüllt:
Bei uns ist es so, dass nicht mehr als 8 bis höchstens 10 Clients
gleichzeitig über's Netzwerk mit einem aktuellen Image versorgt werden
können (via torrent). Sobald es _noch_ mehr werden, bricht die
Geschwindigkeit ziemlich ein und macht das ganze kontraproduktiv.
Daher wollte ich eine Lösung haben, bei der die Clients sozusagen
portionsweise in 8er Gruppen versorgt/aktualisiert werden. Der
"linbo-remote"-Befehl kann zwar die Option -g für eine ganze HWK, doch
das hat hier nie richtig geklappt; bzw. blieben damit immer viele
Clients "unversorgt", da der Befehl nicht überall angekommen ist. Evtl
wurde er auch einfach zu schnell abgearbeitet!?? Die Diskussion hatten
wir hier in der Liste vor einiger Zeit schon mal (imho ergebnislos?) ...
... aber wie auch immer: Diese Lösung hier macht es mit der -i Option
pro IP-Adresse und wartet zwischendurch ein paar Sekunden. Wer's
brauchen kann --> bitte sehr!
Ach ja: Verbesserungsvorschläge sind natürlich willkommen. Ich habe
nicht _alles_ in Variablen gepackt -- daher sind bei euch ein paar
Anpassungen bzgl der benutzten IP-Adressen notwendig. Zudem gibt's
wahrscheinlich einen eleganteren Weg beim Aufteilen der "Portionen".
Aber für den Anfang funktioniert es...
Michael
- -----------------------------------------------------------------------
#!/bin/bash
# Version 1.0 - 06.02.2015
# Räume synchronisieren -- mit Auswahlmenu
# Voraussetzung: start.conf.trusty714 --> Autostart abschalten!
# Danach laufen alle Clients bis zum LINBO-Startbildschirm hoch und
# warten auf "linbo-remote"
function what_to_do() {
PS3="Was soll alles gemacht werden: "
echo " ";
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";
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 lehrerpc_sync() {
linbo-remote -i 10.16.100.100 -c $command &
sleep 5
linbo-remote -i 10.16.200.100 -c $command &
sleep 5
}
function raum1_sync() {
# 8 Clients können max gleichzeitig bedient werden -- Script wird
daher aufgeteilt:
# Die ersten 8 Clients:
for((i=1;i<9;i++)); do
#ping -c 1 -w 1 10.16.100.$i &>/dev/null &&
#echo 10.16.100.$i
linbo-remote -i 10.16.100.$i -c $command &
sleep 10
done
# 10 Minuten schlafen legen bis alle Caches synchronisiert sind
sleep 600
# Die zweiten 8 Clients:
for((i=9;i<17;i++)); do
#ping -c 1 -w 1 10.16.100.$i &>/dev/null &&
#echo 10.16.100.$i
linbo-remote -i 10.16.100.$i -c $command &
sleep 10
done
# 1 Minuten Warten bis alle fertig sind
sleep 60
}
function raum2_sync() {
# 9 Clients können max gleichzeitig bedient werden -- Script wird
daher aufgeteilt:
# Die ersten 9 Clients:
for((i=1;i<10;i++)); do
#ping -c 1 -w 1 10.16.200.$i &>/dev/null &&
#echo 10.16.200.$i
linbo-remote -i 10.16.200.$i -c $command &
sleep 10
done
# 10 Minuten schlafen legen bis alle Caches synchronisiert sind
sleep 600
# Die zweiten 9 Clients:
for((i=10;i<19;i++)); do
#ping -c 1 -w 1 10.16.200.$i &>/dev/null &&
#echo 10.16.200.$i
linbo-remote -i 10.16.200.$i -c $command &
sleep 10
done
# 10 Minuten schlafen legen bis alle Caches synchronisiert sind
sleep 600
# Die dritten 9 Clients:
for((i=19;i<28;i++)); do
#ping -c 1 -w 1 10.16.200.$i &>/dev/null &&
#echo 10.16.200.$i
linbo-remote -i 10.16.200.$i -c $command &
sleep 10
done
# 10 Minuten schlafen legen bis alle Caches synchronisiert sind
sleep 600
# Die letzten 9 Clients:
for((i=28;i<37;i++)); do
#ping -c 1 -w 1 10.16.200.$i &>/dev/null &&
#echo 10.16.200.$i
linbo-remote -i 10.16.200.$i -c $command &
sleep 10
done
# 1 Minuten Warten bis alle fertig sind
sleep 60
}
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 Beide LehrerPCs Ende
do
case "$auswahl" in
"") echo "Ungültige Auswahl" ;;
Raum1) what_to_do; raum1_sync; break ;;
Raum2) what_to_do; raum2_sync; break ;;
Beide) what_to_do; raum1_sync; raum2_sync ; break ;;
LehrerPCs) what_to_do; lehrerpc_sync ; break ;;
*) echo "Ende"; break ;;
esac
done
#EOF
-
--------------------------------------------------------------------------------
- --
Systemdaten:
============
- - virtualisiert mit Proxmox 2.3
- - linuxmuster.net 6.0.46
- - IPFire 2.15
- - Linbo 2.1.10-0
- - Ubuntu 14.04 Clients (trusty714-Vorlage)
- - leoclient1 mit WinXP im offline-Modus
- - Moodle 2.7 (extern mit LDAPS und openLML-Modul)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJU1SwuAAoJELubDVXb7QGnKNkH+wVsw6u7zy4iyVOthz9EpeVC
8Bhk5AtY/YBd7g9FnrAunXGdmkHPkDWo8zvnIub98g8L3ZzPzQs4DBwXRoMZNXbT
6+DzUko6MHdouh6Wnk3KvaI3l6AapjVIXDbZUoszWXFurhsmqrQ6Vo3ruBsBD734
RnhdxqZj75tn3/mDo6mlpMOMq0yArzA197ld0gW4xmbMnynU3EKXBuLxmvtAeDxT
don6q6GerQIVpoD7NgYp8HIuhiZTqimJwfsm9x2Kth0vOMGA59vp/650+FEP2UMi
wTRGtDZwnfu58P1GNdApiqwVJBKD7WDsPnU9xspyMxSkkyBcrQynjeR8Cl1knio=
=w1DF
-----END PGP SIGNATURE-----
_______________________________________________
linuxmuster-user mailing list
[email protected]
https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user