Script che mostra le statistiche del computer ( linux e osx )
Circa 2 anni fa, avendo bisogno di controllare facilmente la situazione di un computer con Ubuntu via shell e con un solo comando, ho iniziato a scrivere un bash script che tenesse sotto controllo tutti i parametri del computer.
Molto spesso non si ha voglia di installare svariate gui per avere sotto controllo temperatura, frequenza cpu, spazio libero, ram, dati trasferiti, informazioni sul kernel e la distro in uso ecc ecc, o magari non vengono mostrati tutti i dati che si vorrebbero all’interno di un unico programma.
Una shell unix mette a disposizione grandissime potenzialità, e si possono ricavare, a proprio piacimento, tutte le informazioni che si vogliono, e magari metterle insieme per poterle visualizzare a schermo, inviarle su una pagina web o quant’altro.
In questo caso, dopo aver perfezionato lo script su Ubuntu, l’ho copiato su OSX su un ibook G4 e piano piano l’ho adattato ad OSX, portandolo a mostrare quasi le stesse identiche informazioni che vengono mostrate su Linux Ubuntu.
Ecco i codici sorgenti, provati sia con athlon xp che con athlon 64 (Ubuntu) che con iBook g4 (OSX).
Probabilmente, nella versione per OSX, le temperature non vengono rilevate correttamente con un processore Intel, ma questo non posso verificarlo.
– UBUNTU
#script stats #monitor your hardware and software data in ubuntu #copyright flapane.com 2009 b=`uname -r` a=`cat /proc/cpuinfo | grep 'model name' | sed -e 's/.*: //' | tail --lines=1` e=`sensors | grep 'temp2' | sed -e 's/.*: //' | awk '{print $1}'` #WITHOUTLMSENSOR e=`cat /proc/acpi/thermal_zone/THRM/temperature | grep 'temperature' | sed -e 's/®//'` f=`cat /etc/issue.net` g=`/sbin/ifconfig eth0 | grep 'Byte RX' | awk '{print $3 $4}'` h=`/sbin/ifconfig eth0 | grep 'Byte RX' | awk '{print $7 $8}'` i=`free -m | grep 'buffers/cache' | awk '{print $3}'` j=`cat /proc/meminfo | grep 'MemTotal' | awk '{print $2}'` k=`uptimemod` l=`cat /proc/cpuinfo | grep 'cpu MHz' | sed -e 's/.*: //' | tail --lines=1` x=`expr $i \/ 1024` y=`expr $j \/ 1024` m=`dmesg | grep -i -F 'processor.' | sed -e 's/.*] //' | tail --lines=1` n=`sensors | grep 'fan1' | sed -e 's/.*: //' | awk '{print $1}'` o=`sensors | grep 'vid' | sed -e 's/.*: //' | awk '{print $1}'` p=`cat /sys/class/hwmon/hwmon0/device/pwm2` q=`df -h | sed -e 's/^/-=[ /g; s/$/ ]=-/g' | egrep -e sd -e hd` echo "PC statistic" echo "-=[ Kernel info: $b ]=-" echo "-=[ $f ]=-" echo "-=[ CPU Info: $a ]=-" echo "-=[ CPU Full: $m ]=-" echo "-=[ CPU Mhz: $l ]=-" echo "-=[ CPU Temp.: $e ]=-" echo "-=[ CPU Vcore: $o ]=-" echo "-=[ CPU Fan: $n (pwm:$p)]=-" echo "-=[ Incoming/Outgoing: $g / $h ]=-" echo "-=[ Used/Total memory: $i MB / $y MB ]=-" echo "-=[ File systems: ]=-" echo "$q" echo "-=[ $k ]=-"
(uptimemod)
#!/bin/bash # created by masterminds a=`cat /proc/uptime | cut -d " " -f1` b=`echo $a | cut -d "." -f1` e=`expr $b \/ 86400` f=`expr $b \% 86400` g=`expr $f \/ 3600` h=`expr $f \% 3600` i=`expr $h \/ 60` j=`expr $h \% 60` if [ $e == 0 ] then if [ $g == 0 ] then echo "Uptime: $i min, $j sec" else echo "Uptime: $g hour, $i min, $j sec" fi else if [ $g == 0 ] then echo "Uptime: $e day, $i min, $j sec" else echo "Uptime: $e day, $g hour, $i min, $j sec" fi fi
– MAC OSX
#!/bin/bash #Mac os stats from my old linux stats script http://peek.snipurl.com/2zgm9 #author flapane (www.flapane.com) #last rev. 9-sep-08 #get temps by djbidi@gmail.com it probably don't gets temp from Intel cpus sensors=`ioreg -n IOHWSensor | awk '/location/ || /current-value/ || /"type"/' | sed -e 's/[^"]*"//' -e 's/" =//' -e 's/location//' -e 's/type//' -e 's/"//g' | awk '{ if ((NR % 3) == 0) print $0; else printf $0 " " }'` #get other datas sysprofhw=`system_profiler SPHardwareDataType` sysprofpow=`system_profiler SPPowerDataType` up=`uptime` wire=`top -l 1 | grep PhysMem | awk '{print $2}' | sed -e 's/M.*//'` act=`top -l 1 | grep PhysMem | awk '{print $4}' | sed -e 's/M.*//'` netstat=`netstat -ib | grep en1` a=`echo "$sysprofhw" | awk '/Machine Name/ || /Machine Model/ || /CPU Type/' | sed 's/[^:]*: //' | awk '{printf $0 " " }'` b=`uname -r` c=`echo "$sysprofhw" | grep CPU | grep Speed | awk '{print $3}'` d=`echo "$sensors" | grep 'temperature' | awk '{ for(i=1;i<5;i++) if ($i=="current-value") $(i+1)=((( (($(i+1) / 2^13) - ($(i+1) / 2^13) % 1 ) / 2^3) - .5)" C\t"); print $0 }' | sed -e 's/current-value //' -e 's/temperature//' | grep CPU | awk '{print $1 $2}'` e=`system_profiler SPSoftwareDataType | grep Mac | awk '{print $6}'` f=`echo "$netstat" | awk '{print $7}' | sed 1q` g=`echo "$netstat" | awk '{print $10}' | sed 1q` mbytesin=`expr $f \/ 1024000` mbytesout=`expr $g \/ 1024000` h=`echo "$wire+$act" | bc` j=`system_profiler SPHardwareDataType | grep Memory | awk '{print $2}'` k=`expr $j \* 1024` l=`echo "$sensors" | grep 'temperature' | awk '{ for(i=1;i<5;i++) if ($i=="current-value") $(i+1)=((( (($(i+1) / 2^13) - ($(i+1) / 2^13) % 1 ) / 2^3) - .5)" C\t"); print $0 }' | sed -e 's/current-value //' -e 's/temperature//' | grep GPU | awk '{print $1 $2}'` m=`echo "$sensors" | grep 'temperature' | awk '{ for(i=1;i<5;i++) if ($i=="current-value") $(i+1)=((( (($(i+1) / 2^13) - ($(i+1) / 2^13) % 1 ) / 2^3) - .5)" C\t"); print $0 }' | sed -e 's/current-value //' -e 's/temperature//' | grep BATTERY | awk '{print $1 $2}'` n=`echo "$sensors" | grep -v 'temperature' | awk '{ for(i=1;i<5;i++) if ($i=="current-value") $(i+1)=(substr((($(i+1)/2^16)"\t"),1,8)); print $0 }' | sed -e 's/current-value //' | grep CORE | awk '{print $1}'` o=`echo "$sysprofpow" | grep Full | grep Charge | awk '{print $5}'` p=`echo "$sysprofpow" | grep Remain | awk '{print $4}'` #shows airport name #q=`dmesg | grep Active | sed q | awk '{print $4}'` #upday=`echo "$up" | awk '{ print $3,$4 }' | awk -F, '{ print $1 }'` #uphour=`echo "$up" | awk '{ print $5 }' | sed -e 's/:.*//'` #upmin=`echo "$up" | awk '{ print $5 }' | sed s/'.*: *'// | sed -e 's/,.*//'` uptotal=`uptime | awk ' $4 ~ /mins/ { d=0; h=0; m=$3; exit } $4 ~ /day/ { d=$3; split($5,a,":"); h=a[1]; m=a[2]; exit } { d=0; split($3,a,":"); h=a[1]; m=a[2]; exit } END { printf("-=[ Uptime: %d day%s, %d hours, %d mins ]=-\n", d, (d == 1 ? "" : "s"), h, m) } '` #echo stats echo "PC statistic" echo "-=[ Kernel info: Darwin $b ]=-" echo "-=[ Mac OS X $e ]=-" echo "-=[ CPU Info: $a @$c Ghz ]=-" echo "-=[ CPU Temperature: $d ]=-" echo "-=[ CPU Vcore: $n V ]=-" echo "-=[ GPU Temperature: $l ]=-" echo "-=[ Battery Temperature: $m ]=-" echo "-=[ Battery Capacity: $p on $o mAh ]=-" echo "-=[ Incoming/Outgoing wlan: $mbytesin MB / $mbytesout MB ]=-" echo "-=[ Used/Total memory: $h MB / $k MB ]=-" echo "$uptotal"
Liberi di modificare, migliorare e adattare il codice, pur citando l’autore.
Gli script si possono scaricare anche al solito osx/linux repository
Questi sono gli output di esempio:
Ubuntu con Athlon XP:
PC statistic
-=[ Kernel info: 2.6.22-14-386 ]=-
-=[ Ubuntu 7.10 ]=-
-=[ CPU Info: AMD Athlon(tm) ]=-
-=[ CPU Full: Detected 2004.568 MHz processor. ]=-
-=[ CPU Mhz: 1404.000 ]=-
-=[ CPU Temp.: +36.0°C ]=-
-=[ CPU Vcore: +1.425 ]=-
-=[ CPU Fan: 3590 (pwm:15)]=-
-=[ Incoming/Outgoing: (29.2MB) / (6.3MB) ]=-
-=[ Used/Total memory: 156 MB / 504 MB ]=-
-=[ File systems: ]=-
-=[ /dev/sda2 6,0G 4,7G 1,1G 82% / ]=-
-=[ /dev/sda1 180G 83G 98G 46% /media/sda1 ]=-
-=[ /dev/hda1 38G 2,6G 35G 7% /media/hda1 ]=-
-=[ Uptime: 3 hour, 27 min, 38 sec ]=-
OSX con iBook g4
PC statistic
-=[ Kernel info: Darwin 8.11.0 ]=-
-=[ Mac OS X 10.4.11 ]=-
-=[ CPU Info: iBook G4 PowerBook6,7 PowerPC G4 (1.5) @1.33 Ghz]=-
-=[ CPU Temperature: 50.5C ]=-
-=[ CPU Vcore: 1.12242 V ]=-
-=[ GPU Temperature: 51.75C ]=-
-=[ Battery Temperature: 29.5C ]=-
-=[ Battery Capacity: 3840 on 4013 mAh]=-
-=[ Incoming/Outgoing en1: 819 MB / 77 MB ]=-
-=[ Used/Total memory: 364 MB / 1024 MB ]=-
-=[ Uptime: 3 days, 7 hours, 35 mins ]=-