mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-31 19:32:31 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@12361 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			166 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|       <pre-scripts config:type="list">
 | |
|         <script>
 | |
|           <filename>foo.sh</filename>
 | |
|           <interpreter>shell</interpreter>
 | |
|           <source>
 | |
| 
 | |
| <![CDATA[
 | |
| #!/bin/sh
 | |
| 
 | |
| AWK=`find / -name awk | tail -1`
 | |
| #old awk /mounts/instsys/bin/awk -f
 | |
| 
 | |
| cat >/tmp/bar.awk <<EOF
 | |
| #!$AWK -f
 | |
| 
 | |
| BEGIN {
 | |
| 	xcatdport = "#TABLE:site:key=xcatiport:value#"
 | |
| 	xcatdhost = "#XCATVAR:XCATMASTER#"
 | |
| 
 | |
| 	ns = "/inet/tcp/0/" xcatdhost "/" xcatiport
 | |
| 
 | |
| 	print "xCAT_xcatd" |& ns
 | |
| 
 | |
| 	while(1) {
 | |
| 		ns |& getline
 | |
| 
 | |
| 		if(\$0 == "ready")
 | |
| 			print "installmonitor" |& ns
 | |
| 		if(\$0 == "done")
 | |
| 			break
 | |
| 	}
 | |
| 
 | |
| 	close(ns)
 | |
| 
 | |
| 	exit 0
 | |
| }
 | |
| EOF
 | |
| 
 | |
| if [ ! -c /dev/vcs ]; then
 | |
| 	mknod /dev/vcs c 7 0
 | |
| fi
 | |
| cat >/tmp/foo.awk <<EOF
 | |
| #!$AWK -f
 | |
| 
 | |
| BEGIN {
 | |
| 	ns = "/inet/tcp/3001/0/0"
 | |
| 
 | |
| 	while(1) {
 | |
| 		ns |& getline
 | |
| 
 | |
| #		if(\$1 == "sh") { #TODO: ENABLE IF DEBUG
 | |
| #			sub(/^sh +/,"",\$0)
 | |
| #			output = \$0
 | |
| #			while((output | getline) > 0)
 | |
| #				print \$0 |& ns
 | |
| #			print "EOO" |& ns
 | |
| #			close(output)
 | |
| #		}
 | |
| 
 | |
| 		if(\$1 == "screendump") {
 | |
| 			output = "chvt " \$2 ";cat /dev/vcs"
 | |
| 			while((output | getline) > 0)
 | |
| 				print \$0 |& ns
 | |
| 			close(output)
 | |
| 		}
 | |
| 
 | |
| 		if(\$1 == "stat") {
 | |
| 		    if( system( "[ -f /mnt/var/log/YaST2/y2logRPM ]" )  == 0 ) {		
 | |
| 			while((getline < "/mnt/var/log/YaST2/y2logRPM") > 0) {
 | |
| 				line = \$0
 | |
| 			}
 | |
| 			close("/mnt/var/log/YaST2/y2logRPM")
 | |
| 
 | |
| 			if(line ~ /\.rpm /) {
 | |
| 				sub(/\.[^\.]+\.rpm .*$/,"",line)
 | |
| 				sub(/^.* /,"",line)
 | |
| 			}
 | |
| 			else {
 | |
| 				line = "prep"
 | |
| 			}
 | |
| 
 | |
| 			print ("installing " line) |& ns
 | |
| 		    }
 | |
|          	    else {
 | |
| 			# The format of /var/log/zypp/history is documented at
 | |
| 			#     http://en.opensuse.org/Libzypp/Package_History
 | |
| 
 | |
| 			lastrpm = "prep"
 | |
| 
 | |
| 			oldFS = FS
 | |
| 			FS="|"
 | |
| 
 | |
| 			while((getline < "/mnt/var/log/zypp/history") > 0) {
 | |
| 				if (\$0 !~ /#/ && \$2 == "install") {
 | |
| 					lastrpm = (\$3 "-" \$4)
 | |
| 				}
 | |
| 			}
 | |
| 			close("/mnt/var/log/zypp/history")
 | |
| 
 | |
| 			FS = oldFS
 | |
| 
 | |
| 			print ("installing " lastrpm) |& ns
 | |
|                    }
 | |
|                }
 | |
| 
 | |
| 	       close(ns)
 | |
| 	}
 | |
| }
 | |
| EOF
 | |
| 
 | |
| chmod 755 /tmp/foo.awk
 | |
| chmod 755 /tmp/bar.awk
 | |
| 
 | |
| /tmp/bar.awk &
 | |
| /tmp/foo.awk >/tmp/foo.log 2>&1 &
 | |
| shopt -s nullglob
 | |
| for disk in /dev/vd*[^0-9];do
 | |
| 	if [ -z "$firstdirectdisk" ]; then firstdirectdisk=$disk; fi #remember first disk as a guess of medium resort
 | |
| 	eddname=$(/lib/udev/edd_id $disk 2> /dev/null)
 | |
| 	if [ ! -z "$eddname" -a "$eddname" = "int13_dev80" ]; then
 | |
| 		instdisk=$disk
 | |
| 		break
 | |
| 	fi
 | |
| done
 | |
| if [ -z "$instdisk" ]; then
 | |
| 	for disk in /dev/sd*[^0-9]; do
 | |
| 		eddname=$(/lib/udev/edd_id $disk 2> /dev/null)
 | |
| 		if [ ! -z "$eddname" -a "$eddname" = "int13_dev80" ]; then
 | |
| 			instdisk=$disk
 | |
| 			break
 | |
| 		fi
 | |
| 		currdriver=`udevadm info --attribute-walk --name $disk |grep DRIVERS|grep -v '""'|grep -v '"sd"'|head -n 1|sed -e 's/[^"]*"//' -e 's/"//'`
 | |
| 		case "$currdriver" in 
 | |
| 		"ata_piix4"|"PMC MaxRAID"|"ahci"|"megaraid_sas") #certainly direct
 | |
| 			if [ -z "$firstdirectdisk" ]; then firstdirectdisk=$disk; fi #remember first disk as a guess of medium resort
 | |
| 			;;
 | |
| 		"mptsas"|"mpt2sas") #*PROBABLY* not SAN, but SAS SAN is possible
 | |
| 			if [ -z "$probablyfirstdirectdisk" ]; then probablyfirstdirectdisk=$disk; fi #remember first disk as a guess of medium resort
 | |
| 			;;
 | |
| 		*)
 | |
| 			if [ -z "$firstdisk" ]; then firstdisk=$disk; fi #remember first disk as a guess of medium resort
 | |
| 			;;
 | |
| 		esac
 | |
| 	done
 | |
| fi
 | |
| if [ -z "$instdisk" ]; then
 | |
| 	if [ ! -z "$firstdirectdisk" ]; then 
 | |
| 		instdisk=$firstdirectdisk 
 | |
| 	elif [ ! -z "$probablyfirstdirectdisk" ]; then
 | |
| 		instdisk=$probablyfirstdirectdisk 
 | |
| 	elif [ ! -z "$firstdisk" ]; then
 | |
| 		instdisk=$firstdisk 
 | |
| 	fi
 | |
| fi
 | |
| 
 | |
| if [ -d /sys/firmware/efi ]; then
 | |
| 	sed -e 's!<device>XCATPARTITIONHOOK</device>!<device>'$instdisk'</device><partitions config:type="list"><partition><filesystem config:type="symbol">vfat</filesystem><mount>/boot/efi</mount><size>128mb</size></partition><partition><mount>swap</mount><size>auto</size></partition><partition><mount>/</mount><size>auto</size></partition></partitions>!' /tmp/profile/autoinst.xml > /tmp/profile/modified.xml
 | |
| else
 | |
| 	sed -e 's!<device>XCATPARTITIONHOOK</device>!<device>'$instdisk'</device>!' /tmp/profile/autoinst.xml > /tmp/profile/modified.xml
 | |
| fi
 | |
| ]]>
 | |
| 
 | |
|           </source>
 | |
|         </script>
 | |
|       </pre-scripts>
 |