GeekTool: Bandwidth

Forleden fik jeg installeret GeekTool, og blev hurtig forelsket i dens måde at arbejde på. Jeg har i lang tid ledet efter program som kunne vise mig noget ala widgets på skrivebordet. Der findes en del widget-programmer til Mac, men de er entet meget begrænsede i udvalg af widgets, eller svær at udvikle selv widgets, eller så bruger de for mange system ressourcer.

Nå, men jeg faldt over GeekTool, og den er meget nem at gå til. Den viser information i tekst, på ens skrivebord. Den kan læser og vise tekst fil, resultat af en eller flere kommandoer eller scripte, bl.a. AppleScript, og billede filer.

På nettet igen, findes en del tips hvordan folk har brugt GeekTool på deres skrivebord, men jeg kunne ikke lige finde nogeen som havde en nuværende netværks overførselshastighed. Så jeg fik lavet min egen, ved hjælp af lidt unix kommandoer og PHP.

Det kunne have nok blive løst ved kun at bruge bash scripting, men jeg gad ikke lige slås med for meget, da jeg kunne nemt finde ud af at lave det i PHP.

Så her kommer den, hvis du nu har lyst til at have det på dit skrivebord. Der skal nok nogle få rettelser til i scriptet virker for dig også. Primært skal man ændre navn på det netværks interface (en2) og lokal IP adressen (192.168.1.100), som din netkort interface har.

#!/usr/bin/php
< ?
function convert($int) {
$kb = 1024;
$mb = 1048576;
$gb = 1073741824;
$tb = 1099511627776;
if ($int >= $kb && $int < = $mb) {
return round($int/$kb)."kb";
} elseif ($int >= $mb && $int < = $gb) {
return round($int/$mb)."mb";
} elseif ($int >= $gb && $int < = $tb) {
return round($int/$gb)."gb";
}
}
$ufirst = `netstat -b -I en2 | grep 192.168.1.100 | awk '{printf $10}'`;
$dfirst = `netstat -b -I en2 | grep 192.168.1.100 | awk '{printf $7}'`;
sleep(1);
$usecond = `netstat -b -I en2 | grep 192.168.1.100 | awk '{printf $10}'`;
$dsecond = `netstat -b -I en2 | grep 192.168.1.100 | awk '{printf $7}'`;
$usize = 0;
$dsize = 0;
$utrdif = ($usecond - $ufirst);
$dtrdif = ($dsecond - $dfirst);
$usize = convert($utrdif);
$dsize = convert($dtrdif);
echo "Network Transfer n";
echo "-----------------n";
echo "DOWN : ". $dsize. "n";
echo " UP : ". $usize. "n";
echo " TX : ". convert($usecond) . "n";
echo " RX : ". convert($dsecond) . "n";
?>