Seite 1 von 1

OPSI mal anders ;)

Verfasst: 15 Jul 2010, 12:02
von d.folger
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.

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