ich hatte das Glück, vor dem "Homeoffice" schon die mysql erweiterung aktiv nutzen zu können, das WAN Modul kam erst nachdem alle Rechner schon im Homeoffice sind.
Vorab: Das hat alles ziemlich gut geklappt, ABER....
Es sind wie immer die kleinen Details, die großes Aua machen
Was ist passiert?
Rechner waren im opsi "ritzerot" und ich hab frei nach der Faq ein "on demand" losgetreten - keine gute Idee, weil die Clients dann ohne WAN Modul fleissig Pakete gezogen haben und naja - Ihr könnts Euch vorstellen.
Wie kommt Ihr ans WAN Modul, aber nicht in meine Lage?
Jaanz einfach, mit diesem Script:
Was macht es?
Wenn ein client umgestellt werden soll, prüft das script:
- ist der Rechnername ein Notebook (über den Rechnernamen, bzw. gibt es den opsiHostKey)
- Ist der Rechner mit einem aktuellen (nicht auf setup stehenden) opsi-client-agent versehen? ->
- Ja weiter, nein finger weg!
- Ist der Rechner vielleicht schon umgestellt?
- Wenn ein Paket auf cached steht muß er das (einen anderen hint hab ich nicht gefunden) ja schreib das in eine Datei, nein mach weiter.
- Wenn ja schreibe das (in einer opsi tauglichen Zeile) in eine Datei und manipuliere die db derart, das da nix auf setup steht.
- Bei dem Reimport gilt:
- Hier bitte aufpassen, immer nur eine Zeile (ppsi-admin -d task setActionRequestWithDependencies setup) nacheinander ausführen, nicht alles aus der Datei kopieren und in der ssh session abfeuern, das mag "er" nicht so gerne.
Viel Spass & Erfolg und bleibt Gesund
Code: Alles auswählen
Ihr müsst diese Werte in anpassen:
domain=
dump2path=
export MYSQL_PWD=
Dann sind die Rechnernamen, die umgestellt werden sollen im skript "versteckt", das hab ich nicht in variablen gepackt - da wären "nbw-f-[0-9]" & "nbw-b-[0-9]" weil unsere Notebooks nach der Nomenklatur
nbw-f-ziffernfolge oder nbw-b-ziffernfolge benamst sind. Das müsst Ihr anpassen.
Code: Alles auswählen
#/bin/sh
#vars:
domain=meine-domain
dump2path=/mein/ausgabepfad
export MYSQL_PWD=dasopsidatenbankpasswort
#get hostkey from mysql
echo 'select hostId, opsiHostKey from HOST where hostId REGEXP "nbw-f-[0-9]" or hostId REGEXP "nbw-b-[0-9]" order by HostId asc;'|mysql -u 'opsi' opsi>$dump2path/hostkeys
#change client 2 WAN
echo "Opsi Client 4 WAN vorbereiten"
echo "Clientname: ohne $domain"
read hostname
hostname=$(echo $hostname|tr '[A-Z]' '[a-z]')
if [ $hostname ]
then
hostkey=$(grep $hostname hostkeys|awk '{ print $2 }')
if [ $hostkey ]
then
echo 'SELECT productId FROM PRODUCT_ON_CLIENT where 'clientId' = '"'$hostname.$domain'"' and 'actionRequest' = '"'setup'"';'|mysql -sN -u 'opsi' opsi>$dump2path/$hostname.ini
grep opsi-client-agent $dump2path/$hostname.ini && exit
check=$(echo 'select actionProgress from PRODUCT_ON_CLIENT WHERE 'clientId' = '"'$hostname.$domain'"' AND actionProgress = '"'cached'"' LIMIT 1;'|mysql -sN -u 'opsi' opsi)
if [ ! "$check" == "cached" ]
then
echo 'update PRODUCT_ON_CLIENT set 'actionRequest' = '"''"' WHERE 'clientId' = '"'$hostname.$domain'"';'|mysql -u 'opsi' opsi
opsi-admin -d method configState_create opsiclientd.event_gui_startup.active $hostname.$domain false
opsi-admin -d method configState_create opsiclientd.event_gui_startup{user_logged_in}.active $hostname.$domain false
opsi-admin -d method configState_create opsiclientd.event_net_connection.active $hostname.$domain true
opsi-admin -d method configState_create opsiclientd.event_timer.active $hostname.$domain true
opsi-admin -a https://$hostname.$domain:4441/opsiclientd -u "$hostname.$domain" -p "$hostkey" method fireEvent "on_demand"
echo "Diese Pakete wieder auf setup stellen:"
cat $dump2path/$hostname.ini
while read host2do
do
echo opsi-admin -d task setActionRequestWithDependencies setup $host2do $hostname.$domain>>$dump2path/$hostname.txt
done <$dump2path/$hostname.ini
else
echo "$hostname.$domain ist bereits umgestellt"
echo "$hostname.$domain">>$dump2path/wan_is_done.txt
fi
fi
fi