OPSI mal anders ;)
Verfasst: 15 Jul 2010, 12:02
Hallo liebe OPSI Gemeinde,
da ich immer wieder gute Anregungen von euch bekommen habe und dadurch jetzt auch dieses Script schreiben konnte, dachte ich mir ich stell euch mal was zur Verfügung das vielleicht interessant sein könnte.
Mit dem Script das ich geschrieben hab, kann man über einen cronjob zB automatisch immer das neueste Softwareupdate, eine automatische Hardwareabfrage & damit verbundene Softwareinstallation (nVidia Forceware) oder Ähnliches machen, ohne das ganze am Server auf setup setzen zu müssen.
Anbei sende ich 2 Beispielskripts von meinen Anfängen.
Bei Kritik, Anregungen, Fragen oder Bugs bitte einfach posten.
da ich immer wieder gute Anregungen von euch bekommen habe und dadurch jetzt auch dieses Script schreiben konnte, dachte ich mir ich stell euch mal was zur Verfügung das vielleicht interessant sein könnte.
Mit dem Script das ich geschrieben hab, kann man über einen cronjob zB automatisch immer das neueste Softwareupdate, eine automatische Hardwareabfrage & damit verbundene Softwareinstallation (nVidia Forceware) oder Ähnliches machen, ohne das ganze am Server auf setup setzen zu müssen.
Anbei sende ich 2 Beispielskripts von meinen Anfängen.
Bei Kritik, Anregungen, Fragen oder Bugs bitte einfach posten.
Code: Alles auswählen
#!/bin/bash
# Definition der OPSI Benutzer
CLIENTS=`opsi-admin -d -s method getClientIds_list | grep hag.eu.honda.com | cut -d "\"" -f 2 | cut -d "\"" -f 1`
for CLIENT in $CLIENTS
do
echo $CLIENT
# Definition des Mainboardtyps & Ausschluss von Virtuellen Maschinen, Vostro's und Dimension
MAINBOARD=`opsi-admin -d method getHardwareInformation_hash $CLIENT | grep COMPUTER_SYSTEM -A 10 | grep model | grep -v Virtual | grep -v Vostro | grep -v DXP061 | cut -d ":" -f 2 | cut -d "," -f 1 | cut -d " " -f 2 | cut -d "\"" -f 2 | tr '[:upper:]' '[:lower:]'`
if [ "$MAINBOARD" = "optiplex" ]
then
MAINBOARD="o"`opsi-admin -d method getHardwareInformation_hash $CLIENT | grep COMPUTER_SYSTEM -A 10 | grep model | grep -v Virtual | grep -v Vostro | grep -v DXP061 | cut -d ":" -f 2 | cut -d "," -f 1 | cut -d " " -f 3 | cut -d "\"" -f 1 | tr '[:upper:]' '[:lower:]'`
else
MAINBOARD=`opsi-admin -d method getHardwareInformation_hash $CLIENT | grep COMPUTER_SYSTEM -A 10 | grep model | grep -v Virtual | grep -v Vostro | grep -v DXP061 | cut -d ":" -f 2 | cut -d "," -f 1 | cut -d " " -f 3 | cut -d "\"" -f 1 | tr '[:upper:]' '[:lower:]'`
fi
if [ "$MAINBOARD" != "" ]
then
echo $MAINBOARD
else
echo `opsi-admin -d method getHardwareInformation_hash $CLIENT | grep COMPUTER_SYSTEM -A 10 | grep model | cut -d ":" -f 2 | cut -d "\"" -f 2`
fi
if [ "$MAINBOARD" != "" ]
then
# Definition der aktuell vorhandenen BIOS Version auf der Hardware
BIOS=`opsi-admin -d method getHardwareInformation_hash $CLIENT | grep BIOS -A 10 | grep version | cut -d ":" -f 2 | cut -d "," -f 1 | cut -d " " -f 2 | cut -d "\"" -f 2 | cut -d "A" -f 2`
let "BIOS=10#$BIOS"
echo $BIOS
# Definition der BIOS Datei auf dem Server
FILE=`ls /opt/pcbin/software/dell_bios/*$MAINBOARD*`
# Definition der neuesten BIOS Version auf dem Server
BIOSUPDATE=`echo $FILE | cut -d "." -f 1 | cut -d "_" -f 4 | cut -d "A" -f 2`
# Definition der Installationsroutinenunterkategorie
SIMPLEFILE=`echo $FILE | cut -d "/" -f 6 | cut -d "." -f 1 | cut -d "A" -f 1`"exe"
echo $SIMPLEFILE
let "BIOSUPDATE=10#$BIOSUPDATE"
echo $BIOSUPDATE
if [ $((BIOSUPDATE)) -gt $((BIOS)) ]
then
MESSAGE=`echo "!!! BIOS wird aktualisiert !!!"`
echo $MESSAGE
# OPSI Aufruf fuer die Installation des Produktes und der Unterkategorie
opsi-admin -d method setProductProperty dell_bios $SIMPLEFILE on $CLIENT
opsi-admin -d method setProductActionRequest dell_bios $CLIENT setup
# Debugging: Alle Clients mit Option auf ein Update werden in diese Datei geschrieben.
echo \[ `date | cut -d "C" -f 1` \] $CLIENT >> /var/log/opsi/automated/biossetup.log
fi
else
MESSAGE=`echo "!!! Virtuelle Maschinen nicht unterstuetzt. Vostro & Dimension NOCH nicht unterstuetzt !!!"`
echo $MESSAGE
echo \[ `date | cut -d "C" -f 1` \] $CLIENT >> /var/log/opsi/automated/nobiossetup.log
fi
# Debugging: Neue Sektion fuer weiterentwickeltes Skript
# echo $CLIENT >> ./logging/debug.log
# echo $MAINBOARD >> ./logging/debug.log
# echo $BIOS >> ./logging/debug.log
# echo $FILE >> ./logging/debug.log
# echo $BIOSUPDATE >> ./logging/debug.log
# echo $SIMPLEFILE >> ./logging/debug.log
# echo " " >> ./logging/debug.log
# if [ "$MESSAGE" = "!!! BIOS wird aktualisiert !!!" ]
# then
# echo "OK" >> ./logging/debug.log
# else
# echo "FAILED" >> ./logging/debug.log
# fi
done
Code: Alles auswählen
#!/bin/bash
CLIENTS=`opsi-admin -d -s method getClientIds_list | grep hag.eu.honda.com | cut -d "\"" -f 2 | cut -d "\"" -f 1`
for CLIENT in $CLIENTS
do
echo $CLIENT
# Videokarte definieren & Ausschluss von noch nicht unterstuetzen Karten
VIDEOCONTROLLER=`opsi-admin -d method getHardwareInformation_hash $CLIENT | grep VIDEO_CONTROLLER -A 10 | grep name | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "\"" -f 1 | grep -v SVGA | grep -v RV516 | grep -v Integrated | grep -v Intel | cut -d "[" -f 2 | cut -d "]" -f 1 | cut -d " " -f 3 | cut -d "/" -f 1`
if [ "$VIDEOCONTROLLER" != "" ]
then
echo $VIDEOCONTROLLER
else
echo `opsi-admin -d method getHardwareInformation_hash $CLIENT | grep VIDEO_CONTROLLER -A 10 | grep name | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "[" -f 1`
fi
if [ "$VIDEOCONTROLLER" = "110M" ]
then
INSTALLATIONSTATUS=`opsi-admin -d method getProductInstallationStatus_hash forceware $CLIENT | grep installationStatus | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "\"" -f 1`
echo $INSTALLATIONSTATUS
if [ "$INSTALLATIONSTATUS" != "installed" ]
then
opsi-admin -d method setProductActionRequest forceware $CLIENT setup
echo "Ich installiere jetzt Forceware Treiber!"
echo \[ `date | cut -d "C" -f 1` \] $CLIENT $VIDEOCONTROLLER >> /var/log/opsi/automated/graphipcsetup.log
fi
else
if [ "$VIDEOCONTROLLER" = "135M" ]
then
INSTALLATIONSTATUS=`opsi-admin -d method getProductInstallationStatus_hash forceware $CLIENT | grep installationStatus | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "\"" -f 1`
echo $INSTALLATIONSTATUS
if [ "$INSTALLATIONSTATUS" != "installed" ]
then
opsi-admin -d method setProductActionRequest forceware $CLIENT setup
echo "Ich installiere jetzt Forceware Treiber!"
echo \[ `date | cut -d "C" -f 1` \] $CLIENT $VIDEOCONTROLLER >> /var/log/opsi/automated/graphipcsetup.log
fi
else
if [ "$VIDEOCONTROLLER" = "350M" ]
then
INSTALLATIONSTATUS=`opsi-admin -d method getProductInstallationStatus_hash forceware $CLIENT | grep installationStatus | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "\"" -f 1`
echo $INSTALLATIONSTATUS
if [ "$INSTALLATIONSTATUS" != "installed" ]
then
opsi-admin -d method setProductActionRequest forceware $CLIENT setup
opsi-admin -d method setProductProperty forceware quadro off $CLIENT
opsi-admin -d method setProductProperty forceware quadro_fx on $CLIENT
echo "Ich installiere jetzt Forceware Treiber!"
echo \[ `date | cut -d "C" -f 1` \] $CLIENT $VIDEOCONTROLLER >> /var/log/opsi/automated/graphipcsetup.log
fi
else
if [ "$VIDEOCONTROLLER" = "7400" ]
then
INSTALLATIONSTATUS=`opsi-admin -d method getProductInstallationStatus_hash forceware $CLIENT | grep installationStatus | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "\"" -f 1`
echo $INSTALLATIONSTATUS
if [ "$INSTALLATIONSTATUS" != "installed" ]
then
opsi-admin -d method setProductActionRequest forceware $CLIENT setup
opsi-admin -d method setProductProperty forceware quadro off $CLIENT
opsi-admin -d method setProductProperty forceware geforce on $CLIENT
echo "Ich installiere jetzt Forceware Treiber!"
echo \[ `date | cut -d "C" -f 1` \] $CLIENT $VIDEOCONTROLLER >> /var/log/opsi/automated/graphipcsetup.log
fi
else
if [ "$VIDEOCONTROLLER" = "" ]
then
echo "!!! Virtual Machine & Intel Video Controller nicht unterstuetzt. Radeon Video Controller NOCH nicht unterstuetzt !!!"
echo \[ `date | cut -d "C" -f 1` \] $CLIENT `opsi-admin -d method getHardwareInformation_hash nbklwe.hag.eu.honda.com | grep VIDEO_CONTROLLER -A 10 | grep name | cut -d ":" -f 2 | cut -d "\"" -f 2 | cut -d "[" -f 1` >> /var/log/opsi/automated/nographipcsetup.log
fi
fi
fi
fi
fi
done