---------- X-Sun-Data-Type: text X-Sun-Data-Description: text X-Sun-Data-Name: text X-Sun-Charset: us-ascii X-Sun-Content-Lines: 19 Jonathan, I have a script that I downloaded from the net that I use. /mdb _____________________ Reply Separator ______________________ => From: Jonathan.Loh@BankAmerica.com => Date: Wed, 29 Jul 1998 09:55:01 -0700 => Subject: hostid->machine type? => To: sun-managers@sunmanagers.ececs.uc.edu => => Is there any way to get system type (Sparc 5, UE1, etc...) from the => hostid? => => => ---------- X-Sun-Data-Type: shell-script X-Sun-Data-Name: module-info X-Sun-Charset: us-ascii X-Sun-Content-Lines: 504 #!/bin/sh # # Copyright 1995, 1994, 1992 Sun Microsystems, Inc. # All Rights Reserved. # if [ `uname -m` = "sun4" ]; then echo "This machine does not support the Open Boot Prom information" echo "that is extracted by the devinfo or prtconf commands." exit fi # # Parse options # orderinfo=0 verbose=0 while getopts vo c do case $c in "o") orderinfo=1 ;; "v") verbose=1 ;; \?) echo "Usage: `basename $0` [-ov]" exit 1 ;; esac done shift `expr $OPTIND - 1` # # Find the utility we need # if [ -x /usr/sbin/prtconf ]; then PRTCONF=/usr/sbin/prtconf else PRTCONF=/usr/etc/devinfo fi # # Find CPU node(s) and their clock frequency, if any # $PRTCONF -pv | cut -c1-255 | awk ' \ BEGIN { ncpu = 0; ecsize = 0; cpufreq = 0; cellsize = 1; \ cputype = "?"; fbtype = "None"; fbname = "None"; } \ $1 == "Node" { \ if (idprom != "") { \ sysfreq = freq; sysname = name; name = ""; freq = "" \ } \ if (name == "'"'memory'"'") { \ stepsize = 18 + (9 * cellsize); \ for (i = 1; i < length(reg); i+= stepsize) { \ chunk = 1; \ for (j = i+stepsize-7; j >= i; j--) { \ c = substr(reg, j, 1); \ if (c != ".") { \ if (c != "0") { \ if (c == "a") { c = 10 } \ if (c == "b") { c = 11 } \ if (c == "c") { c = 12 } \ if (c == "d") { c = 13 } \ if (c == "e") { c = 14 } \ if (c == "f") { c = 15 } \ mem += (c * chunk); \ break; \ } \ chunk *= 16; \ } \ } \ } \ } \ if (type == "'"'cpu'"'") { \ ncpu++; \ cputype = name; \ cpufreq = freq; \ cpuecsize = ecsize; \ } \ if (type == "'"'display'"'") { \ fbname = name " Model " model; \ if (name == "'"'cgfourteen'"'") { fbtype = "SX" } \ if (index(name, "ffb") != 0) { \ if (index(model, "501-2634") != 0) \ fbtype = "Creator"; \ else \ fbtype = "Creator3D"; \ } \ } \ name = ""; freq = ""; type = ""; idprom = ""; model = ""; reg = ""; \ } \ $1 != "Node" { \ if ($1 == "name:") { \ name = $2; \ for (i = 3; i <= NF; i++) name = name "-" $i \ } \ if ($1 == "#size-cells:") { cellsize = $2; } \ if ($1 == "device_type:") { type = $2; } \ if ($1 == "model:") { model = $2; } \ if ($1 == "ecache-size:") { ecsize = $2; } \ if ($1 == "clock-frequency:") { \ for (i = 1; i <= length($2); i++) { \ c = substr($2, i, 1); \ if (c == "a") freq = freq "A"; \ else if (c == "b") freq = freq "B"; \ else if (c == "c") freq = freq "C"; \ else if (c == "d") freq = freq "D"; \ else if (c == "e") freq = freq "E"; \ else if (c == "f") freq = freq "F"; \ else freq = freq c; \ } \ } \ if ($1 == "reg:") { reg = $2 } \ if ($1 == "idprom:") { idprom = $2 } \ } \ END { \ if (idprom != "") { sysfreq = freq; sysname = name } \ if (name == "'"'memory'"'") { \ stepsize = 18 + (9 * cellsize); \ for (i = 1; i < length(reg); i+= stepsize) { \ chunk = 1; \ for (j = i+stepsize-7; j >= i; j--) { \ c = substr(reg, j, 1); \ if (c != ".") { \ if (c != "0") { \ if (c == "a") { c = 10 } \ if (c == "b") { c = 11 } \ if (c == "c") { c = 12 } \ if (c == "d") { c = 13 } \ if (c == "e") { c = 14 } \ if (c == "f") { c = 15 } \ mem += (c * chunk); \ break; \ } \ chunk *= 16; \ } \ } \ } \ } \ if (type == "'"'cpu'"'") { \ ncpu++; \ cputype = name; \ cpufreq = freq; \ cpuecsize = ecsize; \ } \ if (type == "'"'display'"'") { \ fbname = name " Model " model; \ if (name == "'"'cgfourteen'"'") { fbtype = "SX" } \ if (index(name, "ffb") != 0) { \ if(index(model, "501-2634") != 0) \ fbtype = "Creator"; \ else \ fbtype = "Creator3D"; \ } \ } \ if (ncpu == 0) { ncpu = 1 } \ if (fbtype == "None") { fbtype = fbname } \ print sysfreq, " ", sysname, " ", ncpu, " ", cputype, " " cpufreq, \ " ", cpuecsize, " ", mem, " ", fbtype } ' \ > /tmp/xxxmixxx # # Convert clock frequency from Hex Hz to Decimal MHz # read SYSFREQ SYSNAME NCPU CPUTYPE CPUFREQ ECSIZE MEM FBTYPE < /tmp/xxxmixxx echo "16 i 1 k" $SYSFREQ "F4240 / p q" >/tmp/xxxmixxx dc /tmp/xxxmiyyy read SYSFREQN < /tmp/xxxmiyyy if [ $CPUFREQ ]; then echo "16 i 1 k" $CPUFREQ "F4240 / p q" >/tmp/xxxmixxx dc /tmp/xxxmiyyy read CPUFREQN < /tmp/xxxmiyyy echo $CPUFREQN "5 + 10 / 10 * p q" > /tmp/xxxmixxx dc /tmp/xxxmiyyy read CPUFREQR < /tmp/xxxmiyyy if [ $SYSFREQN -gt $CPUFREQN ]; then echo $CPUFREQN "0 k 1 / 1 k 1.0 * p" >/tmp/xxxmixxx dc /tmp/xxxmiyyy read SYSFREQN < /tmp/xxxmiyyy SYSFREQ="xxx" fi fi rm /tmp/xxxmixxx rm /tmp/xxxmiyyy # # Implement new naming conventions, with MP suffix MPCPU=$NCPU MPCPU0="0" if [ $NCPU -gt 1 ]; then MPCPU="1"$NCPU"MP" MPCPU0="0"$NCPU"MP" fi # Based on system name, CPU type, etc., display model # case $SYSNAME in *Ultra-1*|*fusion*) case $FBTYPE in Creator*) FBNAME=" "$FBTYPE FFB="E" OMODEL="A12-U" ;; *) FFB="" FBNAME="" OMODEL="A11-U" ;; esac echo "Ultra 1"$FBNAME "Model" $CPUFREQR$FFB ;; *Ultra-2*) OMODEL="A14-U" echo "Ultra 2" $FBTYPE "Model" $NCPU$CPUFREQR ;; *600"'") case $CPUTYPE in "'"TI*) case $CPUFREQN in 33*) echo "SPARCsystem 600 Model 2"$MPCPU ;; 36*) echo "SPARCsystem 600 Model 3"$MPCPU ;; 40*) echo "SPARCsystem 600 Model 4"$MPCPU ;; 45*) echo "SPARCsystem 600 Model 5"$NCPU ;; 50*) echo "SPARCsystem 600 Model 5"$MPCPU ;; *) echo "SPARCsystem 600," $NCPU $CPUTYPE \ "processors @" $CPUFREQN "MHz" ;; esac ;; "'"Cypress*) case $NCPU in 2) echo "SPARCsystem 600MP Model 120" ;; 4) echo "SPARCsystem 600MP Model 140" ;; *) echo "SPARCsystem 600MP," $NCPU $CPUTYPE \ "processors @" $CPUFREQN "MHz" ;; esac ;; *) echo "SPARCsystem 600," $NCPU $CPUTYPE "processors @" \ $CPUFREQN "MHz" ;; esac ;; *-10"'"|*-10,SX"'"|*-20"'") case $SYSNAME in *-10"'") S1020="10" ;; *-10,SX"'") S1020="10BSX" ;; *-20"'") S1020="20" ;; esac if [ $CPUFREQ ]; then case $CPUFREQN in 33*) echo "SPARCstation $S1020 Model 2"$MPCPU ;; 36*) echo "SPARCstation $S1020 Model 3"$MPCPU ;; 40*) echo "SPARCstation $S1020 Model 4"$MPCPU ;; 45*) echo "SPARCstation $S1020 Model 5"$NCPU ;; 50*) echo "SPARCstation $S1020 Model 5"$MPCPU ;; 60*) echo "SPARCstation $S1020 Model 6"$MPCPU ;; 75*) echo "SPARCstation $S1020 Model 7"$MPCPU ;; 85*) echo "SPARCstation $S1020 Model 8"$MPCPU ;; 10*) echo "SPARCstation $S1020 Model HS1"$NCPU ;; 12*) echo "SPARCstation $S1020 Model HS2"$NCPU ;; *) case $CPUTYPE in "'"TI,*) echo "SPARCstation" $S1020"," $NCPU \ "SuperSPARC processors @" $CPUFREQN \ "MHz with SuperCache" ;; "'"Ross*) echo "SPARCstation" $S1020"," $NCPU \ "HyperSPARC processors @" $CPUFREQN "MHz" ;; *) echo "SPARCstation" $S1020"," $NCPU \ $CPUTYPE "processors @" $CPUFREQN "MHz" ;; esac ;; esac else case $SYSFREQN in 33*) echo "SPARCstation $S1020 Model 2"$MPCPU0 ;; 36*) echo "SPARCstation $S1020 Model 3"$MPCPU0 ;; 40*) echo "SPARCstation $S1020 Model 4"$MPCPU0 ;; 50*) echo "SPARCstation $S1020 Model 5"$MPCPU0 ;; *) echo "SPARCstation" $S1020"," $NCPU "processors @" \ $SYSFREQN "MHz without SuperCache" ;; esac fi ;; *-1000"'"|*-2000"'") case $SYSNAME in *-1000"'") S1k2k="SPARCserver 1000" ;; *-2000"'") S1k2k="SPARCcenter 2000" ;; esac case $SYSFREQN in 40*) S1k2k=$S1k2k"," ;; 50*) S1k2k=$S1k2k"E," ;; *) S1k2k=$S1k2k", XDBus @ "$SYSFREQN" MHz," ;; esac echo $S1k2k $NCPU "processors @" $CPUFREQN "MHz" ;; *-5"'") echo "SPARCstation 5 Model" `basename $SYSFREQN .0` ;; *-4"'") echo "SPARCstation 4 Model" `basename $SYSFREQN .0` ;; *4/20"'") echo "SPARCstation SLC" ;; *4/25"'") echo "SPARCstation ELC" ;; *4/40"'") echo "SPARCstation IPC" ;; *4/50"'") echo "SPARCstation IPX" ;; *4/60"'") echo "SPARCstation 1" ;; *4/65"'") echo "SPARCstation 1+" ;; *4/75"'") echo "SPARCstation 2" ;; *-LC"'") echo "SPARCclassic" ;; *-LX"'") echo "SPARCstation LX" ;; *S240"'"|*Voyager"'") echo "SPARCstation Voyager" ;; *) echo $SYSNAME ;; esac # # Display details if desired # if [ $verbose != 0 ]; then echo $SYSNAME if [ $CPUTYPE ]; then if [ $NCPU -gt 1 ]; then S="s" else S="" fi echo $NCPU $CPUTYPE "processor"$S fi echo "System clock at" $SYSFREQN "MHz" if [ $CPUFREQ ]; then if [ $SYSFREQ != $CPUFREQ ]; then echo "Module clock"$S "at" $CPUFREQN "MHz" fi fi echo $MEM "MB memory" if [ "X$FBTYPE" != "XNone" ]; then echo $FBTYPE "Frame Buffer" fi fi # # Display order information if desired # if [ $orderinfo != 0 ]; then if [ "X"$OMODEL = "X" ]; then echo "Order information not available." exit 1 fi; case $CPUFREQR in 14*) OSPEED="A" ;; 17*) OSPEED="B" ;; 20*) OSPEED="C" ;; *) OSPEED="x" ;; esac case $ECSIZE in 00080000) OCACHE="A" ;; 00100000) OCACHE="B" ;; 00200000) OCACHE="C" ;; 00400000) OCACHE="D" ;; *) OCACHE="x" ;; esac case $FBTYPE in *501-2325*) OFB="A" ;; *501-2253*) OFB="B" ;; Creator) OFB="E" ;; Creator3D) OFB="F" ;; "None") OFB="N" ;; *) OFB="x" ;; esac OMEM=032 if [ $MEM -ge 64 ]; then OMEM=064 fi if [ $MEM -ge 128 ]; then OMEM=128 fi if [ $MEM -ge 256 ]; then OMEM=256 fi if [ $MEM -ge 512 ]; then OMEM=512 fi if [ $MEM -ge 1024 ]; then OMEM=01G fi echo "Order number is" $OMODEL$OSPEED$OCACHE$NCPU"-n"$OFB"-"$OMEM"xx" fi