от някъде ми попадна един скрипт, викаш го с крон-а всяка минута
0 0 * * * /root/info.sh > /var/www/osstat.html
GeSHi (Bash):
#!/bin/bash
Q_HOST="192.168.1.200 "
# SSH USER, change me
USR="jet"
# Show warning if server load average is below the limit for last 5 minute
LOAD_WARN=5.0
# Your network info
MYNETINFO="My Info"
PBY='Powered by Linux'
# font colours
GREEN='<font color="#00ff00">'
RED='<font color="#ff0000">'
NOC='</font>'
LSTART='
<ul>
<li>'
LEND='</li>
</ul>
'
# Local path to ssh and other bins
SSH="/usr/bin/ssh"
PING="/bin/ping"
NOW="$(date)"
## functions ##
writeHead(){
echo '<HTML><HEAD><TITLE>Network Status</TITLE></HEAD>
<BODY>'
# <BODY alink="#0066ff" bgcolor="#000000" link="#0000ff" text="#ccddee" vlink="#0033ff">'
echo '<CENTER><H1>'
echo "$MYNETINFO</H1>"
echo "Generated on $NOW"
echo '</CENTER>'
}
writeFoot(){
echo "<HR><center>$PBY</center>"
echo "</BODY></HTML>"
}
## main ##
writeHead
echo '<TABLE WIDTH=100% BORDER=2 BORDERCOLOR="#000080" CELLPADDING=4 CELLSPACING=4 FRAME=HSIDES RULES=NONE" >'
echo '<TR VALIGN=TOP>'
for host in $Q_HOST
do
#echo '<TD WIDTH=33% BGCOLOR="#0099ff">'
# echo '<TD BGCOLOR="#0099ff">'
echo '<TD >'
_CMD="$SSH $USR@$host"
rhostname="$( hostname)"
ruptime="$( uptime)"
if $(echo $ruptime | grep -E "min|days" >/dev/null); then
x=$(echo $ruptime | awk '{ print $3 $4}')
else
x=$(echo $ruptime | sed s/,//g| awk '{ print $3 " (hh:mm)"}')
fi
ruptime="$x"
rload="$( uptime |awk -F'average:' '{ print $2}')"
x="$(echo $rload | sed s/,//g | awk '{ print $2}')"
y="$(echo "$x >= $LOAD_WARN" | bc)"
[ "$y" == "1" ] && rload="$RED $rload (High) $NOC" || rload="$GREEN $rload (Ok) $NOC"
rclock="$( date +"%r")"
rtotalprocess="$( ps axue | grep -vE "^USER|grep|ps" | wc -l)"
rfs="$( df -hT | grep -v tmpfs )"
rusedram="$( free -mto | grep Mem: | awk '{ print $3 " MB" }')"
rfreeram="$( free -mto | grep Mem: | awk '{ print $4 " MB" }')"
rtotalram="$( free -mto | grep Mem: | awk '{ print $2 " MB" }')"
$PING -c1 $host>/dev/null
if [ "$?" != "0" ] ; then
rping="$RED Failed $NOC"
else
rping="$GREEN Ok $NOC"
echo "<b><u>$rhostname</u></b><BR>"
echo "Ping status: $rping<BR>"
echo "Time: $rclock<BR>"
echo "Uptime: $ruptime <BR>"
echo "Load avarage: $LSTART $rload $LEND"
echo "Total running process: $LSTART $rtotalprocess $LEND"
echo "Disk status:"
echo "<pre> $rfs </pre>"
echo "Ram/swap status: <pre> $(free -m) </pre>"
fi
echo "</td>"
done
echo "</tr>
</table>
<pre>
$(/usr/sbin/smartctl -l error /dev/sda) <hr>
$(/usr/bin/sensors) <hr>
$(/usr/bin/top -b -d 10 -n 3 | /usr/bin/head -n 35) <hr>
$(/usr/bin/lspci) <hr>
$(/bin/cat /proc/cpuinfo) <hr>
</pre> "
writeFoot
отдолу можеш да му добавиш още статистики каквото те вълнува.
/proc/
е пълна с файлове, които директно се четат и може да се парсват с информация от ядрото за твоята система
отваряш html файла с браузъра и четеш