HowTo: linbo-remote per Menu vom Server aus steuern

Hi.
Ich habe gerade ein weiteres Script, das ich irgendwann mal für den v6.x Server zusammengebastelt habe, auf den v7 Server übertragen.

Vielleicht kann das ja jemand brauchen … es ist jedenfalls sehr schnell an die eigenen Bedürfnisse anpassbar.

Das Script ist im Moment nicht scharf gestellt; dazu muss noch in der Zeile „SCHARF STELLEN“ das # herausgenommen werden…
Man kann also alles völlig gefahrlos testen, da der Befehl nur per echo ausgegeben aber nicht wirklich ausgeführt wird…

#! /bin/bash
# Version 2.1 vom 06.09.2020

# Dieses Script versorgt alle Rechner einer HWK per Menusteuerung mit einem Image. 
# Man kann die gängigsten Befehle und häufig verwendeten Räume eintragen.

# Voraussetzung: In der start.conf.<HWK> --> Autostart abschalten!
# Danach laufen alle Clients bis zum LINBO-Startbildschirm hoch und warten auf "linbo-remote"

################################################################################################
# globale Deklarationen für die Räume:
ROOM1='raum1';
ROOM2='raum2';
ROOM3='schullaptop';

# Varianten zur Synchronisation:
command1="format,initcache,sync:1,start:1";
command2="initcache:torrent,sync:2,sync:1,reboot";
command3="initcache:torrent,sync:1,start:1,reboot";
command4="start:1";
command5="reboot";

# Hier die Ausnahmen deklarieren, die NICHT synchronisiert werden sollen:
# Mit Pipe getrennte Keywords die Drucker definieren (drucker, printers, whatever)
PRINTER_KEYWORDS='drucker|serverraum|usb-stick|knoppix|t410|ams' 

# Wo befindet sich die devices.csv? (default hier eingetragen)
devices=/etc/linuxmuster/sophomorix/default-school/devices.csv;

# Wartezeit zwischen den Zyklen
SECS=2
#SECS=600

# Anzahl der Clients pro Zyklus -- es werden immer x Hosts auf einmal synchronisiert:
HOSTPERCYCLE=20
##################################################################################################

function what_to_do() {
PS3="Was soll alles gemacht werden: "
echo " ";

select auswahl2 in $command1 $command2 $command3 $command4 $command5 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 ;;
$command5) command=$command5; 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 $devices |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]}"

# NUR Ausgabe:
echo "linbo-remote -i ${IP[$i]} -c $command"; 
#SCHARF STELLEN:  
# /usr/sbin/linbo-remote -i ${IP[$i]} -c $command;
 sleep 1

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 Schullaptop 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 ;;
Schullaptop) ROOM=$ROOM3; what_to_do; raum_sync; break ;;
*) echo "Ende"; exit 0 ;;
esac
done
#EOF

VG,
Michael

1 „Gefällt mir“