• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

GeekTool - Systemmonitoring auf dem Desktophintergrund

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Das Bild ist aber kurz nach dem Booten noch nicht da (wird ja gerade zum ersten mal runtergeladen). Bis zum ersten Refresh habe ich also kein Bild. ...

Sollte nicht das Bild vom letzten Tag dann angezeigt werden? (OK, es kann sein, das Mac OS den tmp-Ordner löscht, aber man kann das Bild ja woanders abspeichern.) Ich mein, das ist dann auch nicht aktuell, aber wenigstens was. ;)

Ich überlege gerade, es wäre ja am besten, wenn Geektool einfach die Datei watched, und sie immer neu läd, wenn sie sich verändert hat. (OK, das müsste man als Entwicker direkt mit einbauen, und es ist die Frage, ob die Überwachung der Datei ressourcenschonender als das minütliche neuladen...)
 

Apollo

Jamba
Registriert
01.07.07
Beiträge
54
Mac OS löscht beim booten (oder runterfahren) die Dateien im tmp-Ordner. Ich habe es jetzt mal so geändert, dass eine Datei in einem Ordner erstellt bzw. geöffnet wird, der nicht regelmäßig geleert wird. Eleganter wäre natürlich die Variante, das immer das richtige Bild angezeigt wird bzw. Geektool die Datei watched, wenn das nicht zu viel Ressourcen verbraucht. Das übersteigt allerdings bei weitem meine Programmierkenntnisse. ;)
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Jo, das watchen müsste dann schon der Geektool Entwickler implementieren.
Aber es ist ja kein Problem, die Datei woanders abzulegen, ich habe sie nach ~/.weather.png abgespeichert. So stört sie nicht in Dateisystem...
 

Nobbi

Empire
Registriert
30.12.06
Beiträge
88
Guten morgen,
ich wollte mal meinen Wettercode von Geektool zur Verfügung stellen, der u.A. auch Luftfeuchtigkeit, Luftdruck und Taupunkt anzeigt. Ich habe dazu das bekannte Skript etwas modifiziert, es sind aber meine ersten Schritte in der Terminal Programmierung. Das einzige, was nicht funktioniert ist hinter Sichtweite "km" zu schreiben, da er da immer einen Zeilenumbruch machen möchte, den ich nicht wegbekomme. Vielleicht hat da einer von euch eine Idee.

Code:
curl --silent "http://xml.weather.yahoo.com/forecastrss?p=GMXX5839&u=c" | grep -E '(Current Conditions:|C<BR)' | sed -e 's/Current Conditions://' -e 's/<br \/>//' -e 's/<b>//' -e 's/<\/b>//' -e 's/<BR \/>//' -e 's/<description>//' -e 's/<\/description>//' | tail -n1 | awk '{ print $(NF-1) " Grad" }'

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Luftdruck' | sed  -e 's/mb und gleichbleibend//' -e 's/mb und ansteigend//' -e 's/mb und fallend//' -e 's/<\/dd\>//' -e 's/\>/ /g'  | tail -n1 | awk ' {print "Luftdruck: "  $(NF-1) " mbar"}'

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Luftfeuchtigkeit' | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Luftfeuchtigkeit\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Luftfeuchtigkeit: " $(NF-1) " %"} '

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Sichtweite:' | sed  -e 's/\%\<\/dd\>//' -e 's/\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sichtweite\:\<\/dt\>//'  -e '/ˆ$/d' -e '/ˆ$/d' -e's/\n//' | awk '{print "Sichtweite: " $NF}'

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Taupunkt' | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Taupunkt\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Taupunkt: " $(NF-1) "°C"} '

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Wind:' | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Wind\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Wind: " $(NF-1) " km/h"} '

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Sonnenaufgang:' | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenaufgang\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Sonnenaufgang: " $(NF-1)} '

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" |grep -e 'Sonnenuntergang:' | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenuntergang\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Sonnenuntergang: " $(NF-1)} '
Geektool..jpg
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Hat es einen besonderen Grund warum Du das File für jede Darstellung komplett neu runterlädst? Das verursacht enorm unnötigen Traffic, dauert unnötig lange und ist mehr als ineffizient. Lade das einmal in eine Datei und arbeite von dort weiter!
Gruß Pepi
 

Nobbi

Empire
Registriert
30.12.06
Beiträge
88
das habe ich mir auch gedacht, aber ich bin ganz blutiger Anfänger und hatte keinen Ansatz dafür. Ich versuche das heute Abend mal in Ruhe.
Gruss
 

Nobbi

Empire
Registriert
30.12.06
Beiträge
88
So hab das mal gemacht, war einfacher, als ich gedacht hätte.
Code:
curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" | grep "forecast-icon" | sed "s/.*background\:url(\'\(.*\)\')\;\ _background.*/\1/" | xargs curl --silent -o /tmp/weather.png\

curl --silent "http://de.weather.yahoo.com/deutschland/nordrhein-westfalen/eschweiler-12834433/" >  /tmp/weather.txt

grep -E '(Current Conditions:|C<BR)' /tmp/weather.txt | sed -e 's/Current Conditions://' -e 's/<br \/>//' -e 's/<b>//' -e 's/<\/b>//' -e 's/<BR \/>//' -e 's/<description>//' -e 's/<\/description>//' | tail -n1 | awk '{ print $(NF-1) " Grad" }'

grep -e 'Luftdruck' /tmp/weather.txt | sed  -e 's/mb und gleichbleibend//' -e 's/mb und ansteigend//' -e 's/mb und fallend//' -e 's/<\/dd\>//' -e 's/\>/ /g'  | tail -n1 | awk ' {print "Luftdruck: "  $(NF-1) " mbar"}'

grep -e 'Luftfeuchtigkeit' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Luftfeuchtigkeit\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Luftfeuchtigkeit: " $(NF-1) " %"} '

grep -e 'Sichtweite:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sichtweite\:\<\/dt\>//'  -e '/ˆ$/d' -e '/ˆ$/d' -e's/\n//' | awk '{print "Sichtweite: " $NF}'

grep -e 'Taupunkt' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Taupunkt\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Taupunkt: " $(NF-1) "°C"} '

grep -e 'Wind:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Wind\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Wind: " $(NF-1) " km/h"} '

grep -e 'Sonnenaufgang:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenaufgang\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Sonnenaufgang: " $(NF-1)} '

grep -e 'Sonnenuntergang:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenuntergang\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Sonnenuntergang: " $(NF-1)} '
rm /tmp/weather.txt
hat denn einer ne Idee, wo denn hinter der Sichtweite der Zeilenumbruch herkommt?
Gruss
 

MaikD

Granny Smith
Registriert
11.01.09
Beiträge
15
Hi, ich verwende jetzt diesen modifizierten Code:

Code:
curl --silent "http://de.weather.yahoo.com/deutschland/th%C3%BCringen/erfurt-648351/" | grep "forecast-icon" | sed "s/.*background\:url(\'\(.*\)\')\;\ _background.*/\1/" | xargs curl --silent -o /tmp/weather.png\

curl --silent "http://de.weather.yahoo.com/deutschland/th%C3%BCringen/erfurt-648351/" >  /tmp/weather.txt

grep -e 'Luftdruck' /tmp/weather.txt | sed   -e 's/<\/dd\>//' -e 's/\>/ /g'  | tail -n1 | awk ' {print "Luftdruck: "  $(NF-3) " mbar - " $NF}'

grep -e 'Luftfeuchtigkeit' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Luftfeuchtigkeit\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Luftfeuchtigkeit: " $(NF-1) " %"} '

grep -e 'Sichtweite:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sichtweite\:\<\/dt\>//'  -e '/ˆ$/d' -e '/ˆ$/d' -e's/\n//' | awk '{print "Sichtweite: " $(NF-1) " km"}'

grep -e 'Taupunkt' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Taupunkt\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Taupunkt: " $(NF-1) "°C"} '

grep -e 'Wind:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Wind\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | awk '{print "Wind: " $(NF-2) "  "$(NF-1) " km/h"} '

grep -e 'Sonnenaufgang:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenaufgang\:\<\/dt\>//'  -e '/ˆ$/d' | sed 's/h/:/g' |tail -n1 | awk '{print "Sonnenaufgang: " $(NF-1) " Uhr"} '

grep -e 'Sonnenuntergang:' /tmp/weather.txt | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenuntergang\:\<\/dt\>//'  -e '/ˆ$/d' | sed 's/h/:/g' | tail -n1 | awk '{print "Sonnenuntergang: " $(NF-1) " Uhr"} '
rm /tmp/weather.txt

Der gibt die Zusatzinfos mit aus und wandelt die Uhrzeit beim Sonnenauf und -untergang in ein besser lesbares Format um. Die Sichtweite sieht eigentlich auch ordentlich aus.

So langsam bin ich mit meinem Desktop zufrieden :)
Wallpaper..jpg
 

kortatu

Erdapfel
Registriert
24.06.07
Beiträge
4
ich würde gern einen countdown zu einem bestimmten termin anzeigen lassen. das ganze soll dann so ausgegeben werden:

ereignis: 2 day 23 hour 3 minutes remaining

kann mir da vielleicht wer helfen?

Hallo ,

ich möchte die Frage von dewey nochmals aktualisieren. Eben einen Countdown zu einem bestimmten Termin darzustellen.

Vielen Dank
 

Fenster

Bismarckapfel
Registriert
28.11.07
Beiträge
143
Kann man die 2 Zeilen für den Sonnenaufgang/Sonnenuntergang so anpassen, dass da nicht 6h40/18h30 steht sondern 6:40/18:30?
Hab leider nicht die geringste Ahnung von sed/awk.
 

MaikD

Granny Smith
Registriert
11.01.09
Beiträge
15
Jupp, habe es bei mir so gelöst:

grep -e 'Sonnenaufgang:' /tmp/weather.txt | sed -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenaufgang\:\<\/dt\>//' -e '/ˆ$/d' | sed 's/h/:/g' |tail -n1 | awk '{print "Sonnenaufgang: " $(NF-1) " Uhr"} '

grep -e 'Sonnenuntergang:' /tmp/weather.txt | sed -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' -e 's/\<dt\>Sonnenuntergang\:\<\/dt\>//' -e '/ˆ$/d' | sed 's/h/:/g' | tail -n1 | awk '{print "Sonnenuntergang: " $(NF-1) " Uhr"} '

MaikD
 

Fenster

Bismarckapfel
Registriert
28.11.07
Beiträge
143
Hallo,

ich schonwieder. Habe noch eine Frage zu diesem Code der das Wetter mit Grad Celsius angibt:

Dein Beitrag ist zwar schon etwas her, bei mir funktioniert die Anzeige aber mit dem folgenden Code (musst halt noch die Stadt anpassen, Geektool 3.0 RC5 (116)):

Code:
curl --silent "http://xml.weather.yahoo.com/forecastrss?p=GMXX0044&u=c" | grep -E '(Current Conditions:| C<BR)' | sed -e 's/Current Conditions://' -e 's/<br \/>//' -e 's/<b>//' -e 's/<\/b>//' -e 's/<BR \/>//g' -e 's/<description>//' -e 's/<\/description>//' -e 's/Fair/Heiter/g'  -e 's/Partly/Zum Teil/g' -e 's/Sunny/Sonnig/g' -e 's/Mostly/Meist/g' -e 's/Heavy/Starker/g' -e 's/Light/Leichter/g' -e 's/Rain/Regen/g' -e 's/Showers/Schauer/g' -e 's/T-showers/Gewitter/g' -e 's/Thundershower/Gewitterschauer/g' -e 's/Mostly/Meist/g' -e 's/Scattered/Vereinzelt/g' -e 's/Showers Late/Abends Schauer/g' -e 's/Shower/Schauer/g' -e 's/Showers in the Vicinity/Schauer/g' -e 's/AM/vormittags/g' -e 's/PM/nachmittags/g' -e 's/Clear/Klar/g' -e 's/Cloudy/bewölkt/g' -e 's/Wind/Windig/g' -e 's/Few/Wenige/g' -e 's/Thunderstorm/Gewittersturm/g' -e 's/Thunder/Gewitter/g' -e 's/Snow/Schnee/g' -e 's/Fog/Nebel/g' -e 's/Early/Morgens/g' -e 's/Late/Abends/g' -e 's/Drizzle/Nieselregen/g' -e 's/Isolated/Vereinzelt/g' -e 's/Mix/Wechselhaft/g' -e 's/Wintry/Winterlich/g' -e 's/to/oder/g' -e 's/Mist/Leichter Nebel/g' -e 's/\ C$/\°C/' | iconv -f utf-8
Die Ausgabe ist damit z.B. so: "Leichter Regen, 3°C". Kann man hier das "," durch ein "bei" austauschen? Damit es dann so aussieht: "Leichter Regen bei 3°C".

/ edit: Und wieso ist bei diesem Script an erster Stelle ein Absatz?
 

h0sch1

Braeburn
Registriert
28.03.06
Beiträge
42
Hallo zusammen,

hier mein Desktop.

screenshot.png
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Nett... :-D

Mich würde mal interessieren, ob du die ganzen einzelnen Einträge einzeln zusammengebastelt hast?

Oder ist das ein riesiges Kommando?
 

h0sch1

Braeburn
Registriert
28.03.06
Beiträge
42
@naich

die linke Seite besteht aus zwei Scripts:

Oberer Teil:
Shellscript: unix_info.sh

Code:
#!/bin/bash

### A Script for view System-Informations in Geektool

RAM_unformatted=`sysctl hw.memsize | sed -e 's/[^ ]* \([0-9]\)/\1/g'`
CPU=`sysctl machdep.cpu.brand_string | sed -e 's/\([^ ]*:\) //g' -e 's/  //g'`
CPU_CORE=`sysctl machdep.cpu.core_count | sed -e 's/\([^ ]*:\) //g'`
CPU_64=`sysctl hw.cpu64bit_capable | sed -e 's/\([^ ]*:\) \([0-1]\)/\2/g'`
CPU_L1=`sysctl hw.l1icachesize | sed -e 's/\([^ ]*:\) //g'`
CPU_L2=`sysctl hw.l2cachesize | sed -e 's/\([^ ]*:\) //g'`
MODEL=`sysctl hw.model | sed -e 's/\([^ ]*:\) //g' `
BUILD_VERSION=`sysctl kern.osversion | sed -e 's/\([^ ]*:\) //g' `
OS_TYPE=`sw_vers -productName` 
OS_VERSION=`sw_vers -productVersion`
UPTIME="`uptime | awk '{print $3 " " $4 " " $5 }' | cut -f1 -d ","`"
CPULOAD="`top -l2  | awk '/CPU usage/ && NR > 5 {print $3, " "$4 " "$5 " "$6 " "$7 " " $8}'`"

#==========for iTunes ===================
if [ "$(ps -Ac | grep ' iTunes$')" != "" ]; then
	if [ "$(/usr/bin/osascript << sendMsg
            tell application "iTunes"
              get player state
            end tell
sendMsg
)" = "playing" ] ; then
    	iArtist=$(/usr/bin/osascript << sendMsg
                  tell application "iTunes"
                    get artist of current track
                  end tell
sendMsg);
		iSong=$(/usr/bin/osascript << sendMsg
                tell application "iTunes"
                  get name of current track
                end tell
sendMsg);
		itunesmsg="$iArtist - $iSong";
	else
    		itunesmsg="not playing music";
	fi
else
	itunesmsg="not running";
fi
/usr/bin/osascript /Users/hoschi/Entwicklung/GeekTool/itunesartwork.scpt
#==========for iTunes ===================

#==========for Server ===================
service --test-if-configured-on ssh &> /dev/null;
if [ $? = 0 ]; then sshsrv="running";
else sshsrv="offline"; fi
if [ "$(ps -Ac | grep mysqld)" != "" ]; then sqlsrv="running";
else sqlsrv="offline"; fi

# IP stuff
lanip=$(ifconfig en0 | grep 'inet ' | awk '{print $2}')
if [ "$lanip" = "" ]; then lanip="offline"; fi

# get the current number of bytes in and bytes out
myvar1=`netstat -ib | grep -e "en0" -m 1 | awk '{print $7}'` #  bytes in
myvar3=`netstat -ib | grep -e "en0" -m 1 | awk '{print $10}'` # bytes out
sleep 1
# get the number of bytes in and out one second later
myvar2=`netstat -ib | grep -e "en0" -m 1 | awk '{print $7}'` # bytes in again
myvar4=`netstat -ib | grep -e "en0" -m 1 | awk '{print $10}'` # bytes out again

# find the difference between bytes in and out during that one second and
# convert bytes to kilobytes
lankbin="in: `echo "scale=2; $(($myvar2 - $myvar1))/1024;" | bc` Kb/sec"
lankbout="out: `echo "scale=2; $(($myvar4 - $myvar3))/1024;" | bc` Kb/sec"

wlanip=$(ifconfig en1 | grep 'inet ' | awk '{print $2}')
if [ "$wlanip" = "" ]; then wlanip="offline"; fi

# get the current number of bytes in and bytes out
myvar1=`netstat -ib | grep -e "en1" -m 1 | awk '{print $7}'` #  bytes in
myvar3=`netstat -ib | grep -e "en1" -m 1 | awk '{print $10}'` # bytes out
sleep 1

# get the number of bytes in and out one second later
myvar2=`netstat -ib | grep -e "en1" -m 1 | awk '{print $7}'` # bytes in again
myvar4=`netstat -ib | grep -e "en1" -m 1 | awk '{print $10}'` # bytes out again

# find the difference between bytes in and out during that one second and
# convert bytes to kilobytes
wlankbin="in: `echo "scale=2; $(($myvar2 - $myvar1))/1024;" | bc` Kb/sec"
wlankbout="out: `echo "scale=2; $(($myvar4 - $myvar3))/1024;" | bc` Kb/sec"

inetip=$(curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g')
if [ "$inetip" = "" ]; then inetip="offline"; fi
#==========for Server ===================

if [ "$CPU_64" == 0 ]; then
  CPU_64="No"
else
  CPU_64="Yes"
fi

cat <<__EOF__
User: "$USER"
  --> User-ID: "$UID"
Computer: 
  --> Name: `uname -n`
  --> Arch: `uname -p`
  --> Kernel: `uname -sr`
  --> OS-Version: $OS_TYPE $OS_VERSION
  --> OS-Build-Version: $BUILD_VERSION
  --> Model: $MODEL
  --> RAM: `expr $RAM_unformatted / 1024 / 1024` MB
  --> CPU: $CPU
     --> Core(s): $CPU_CORE
     --> 64Bit-Support: $CPU_64
     --> L1-Cache: `expr $CPU_L1 / 1024` KB
     --> L2-Cache: `expr $CPU_L2 / 1024 / 1024` MB
     --> CPU usage: $CPULOAD
  --> UPTIME: $UPTIME
Network:
  --> LAN IP: $lanip
    --> $lankbin
    --> $lankbout
  --> WLAN IP: $wlanip
    --> $wlankbin
    --> $wlankbout
  --> External IP: $inetip
Discs:
__EOF__
cd /Volumes
disc_info="`df -h`"
for i in `ls -d1 *`; do
  if [ -h "$i" ]; then
    echo "$disc_info" | grep -m 1 "/" | awk '{print $1":", $2, "total,", $3, "used,", $4, "remaining"}' | sed -e "s/[^ ]*:/  --> $i:/g"
  else
    echo "$disc_info" | grep "$i" | awk '{print $1":", $2, "total,", $3, "used,", $4, "remaining"}' | sed -e "s/[^ ]*:/  --> $i:/g"
  fi
done
cat <<__EOF__
Services:
  --> SSH: $sshsrv
  --> SQL: $sqlsrv

Something:
  --> iTunes: $itunesmsg

__EOF__
exit 0

Unterer Teil (iTunes Cover)

Applescript itunesartwork.scpt

Code:
-- Paths and stuff
set ArtworkFromiTunes to ((path to home folder) as text) & ¬
	"Entwicklung:GeekTool:cover_from_itunes:albumArt.pict" as alias
set iTunesArtwork to ((path to home folder) as text) & ¬
	"Entwicklung:GeekTool:cover_from_itunes:albumArt.pict"
set DefaultArtwork to ((path to home folder) as text) & ¬
	"Entwicklung:GeekTool:cover_default:albumArt.pict"
set displayArtwork to ((path to home folder) as text) & ¬
	"Entwicklung:GeekTool:albumArt.pict"

-- Unix versions of the above path strings
set unixITunesArtwork to the quoted form of POSIX path of iTunesArtwork
set unixDefaultArtwork to the quoted form of POSIX path of DefaultArtwork
set unixDisplayArtwork to the quoted form of POSIX path of displayArtwork

set whichArt to "blank"
tell application "System Events"
	if exists process "iTunes" then -- iTunes is running
		tell application "iTunes"
			if player state is playing then -- iTunes is playing
				set aLibrary to name of current playlist -- Name of Current Playlist
				set aTrack to current track
				set aTrackArtwork to null
				if (count of artwork of aTrack) ≥ 1 then -- there's an album cover
					"Running and playing and art"
					set aTrackArtwork to data of artwork 1 of aTrack
					set fileRef to ¬
						(open for access ArtworkFromiTunes with write permission)
					try
						set eof fileRef to 512
						write aTrackArtwork to fileRef starting at 513
						close access fileRef
					on error errorMsg
						try
							close access fileRef
						end try
						error errorMsg
					end try
					
					tell application "Finder" to ¬
						set creator type of ArtworkFromiTunes to "????"
					set whichArt to "iTunes"
				end if
			end if
		end tell
	end if
end tell

if whichArt is "iTunes" then
	do shell script "ditto -rsrc " & unixITunesArtwork & space & unixDisplayArtwork
else
	do shell script "ditto -rsrc " & unixDefaultArtwork & space & unixDisplayArtwork
end if

======================

Die rechte Seite besteht aus 3 Scripts:

Wetter:
Code:
#!/bin/bash
PICTURE="/Users/hoschi/Entwicklung/GeekTool/weather.png"
TMP="/Users/hoschi/Entwicklung/GeekTool/weather.txt"
TMPTIME="/Users/hoschi/Entwicklung/GeekTool/weather_time.txt"

no_inet="0"
ping -c1 -t2 www.google.de >/dev/null 2>&1 || no_inet="1"
if [ "$no_inet" == "0" ]; then
  curl --silent "http://de.weather.yahoo.com/deutschland/bayern/monheim-12837197/" | \
    grep "forecast-icon" |\
    sed "s/.*background\:url(\'\(.*\)\')\;\ _background.*/\1/" | \
    xargs curl --silent -o "$PICTURE"
  curl --silent "http://de.weather.yahoo.com/deutschland/bayern/monheim-12837197/" > "$TMP"
  date '+%d.%m.%Y - %H:%M:%S' > "$TMPTIME"
fi
cat "$TMPTIME"
weather_temp="`grep "Temperatur" "$TMP" | sed -e 's/[^<]*>//g' \
  -e 's/<//g' -e 's/ °/°/g' -e 's/[^  ]*.*://g'`"
grep "yw-cond" "$TMP" | sed -e 's/[^<]*>//g' -e 's/<//g' \
  -e 's/  //g' -e "s/.$/, $weather_temp/g" 

grep -e 'Luftdruck' "$TMP" | sed   -e 's/<\/dd\>//' -e 's/\>/ /g' | \
  tail -n1 | awk ' {print "Luftdruck: "  $(NF-3) " mbar"}'
grep -e 'Luftfeuchtigkeit' "$TMP" | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' \
  -e 's/\<dt\>Luftfeuchtigkeit\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | \
  awk '{print "Luftfeuchtigkeit: " $(NF-1) " %"} '
grep 'Sichtweite' "$TMP" | sed -e 's/[^ ]*<dd>/Sichtweite: /' -e 's/  //g' -e 's/<\/dd>//g'
grep -e 'Taupunkt' "$TMP" | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' \
  -e 's/\<dt\>Taupunkt\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | \
  awk '{print "Taupunkt: " $(NF-1) "°C"} '
grep -e 'Wind:' "$TMP" | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' \
  -e 's/\<dt\>Wind\:\<\/dt\>//'  -e '/ˆ$/d' | tail -n1 | \
  awk '{print "Wind: " $(NF-2) "  "$(NF-1) " km/h"} '
grep -e 'Sonnenaufgang:' "$TMP" | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' \
  -e 's/\<dt\>Sonnenaufgang\:\<\/dt\>//'  -e '/ˆ$/d' | sed 's/h/:/g' |tail -n1 | \
  awk '{print "Sonnenaufgang: " $(NF-1) " Uhr"} '
grep -e 'Sonnenuntergang:' "$TMP" | sed  -e 's/\%\<\/dd\>//' -e 's/\<dd\>/ /g' \
  -e 's/\<dt\>Sonnenuntergang\:\<\/dt\>//'  -e '/ˆ$/d' | sed 's/h/:/g' | \
  tail -n1 | awk '{print "Sonnenuntergang: " $(NF-1) " Uhr"} '

iCal Kalender:
Code:
#!/bin/bash
/usr/local/bin/icalBuddy eventsToday+7 | sed -e "s/\([0-9][0-9][0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\)/\3.\2.\1/g" -e 's/ at / von /g'

Kalender:
Code:
#!/bin/bash
echo `date "+%d %B %Y"` | awk \
'{ print substr("          ",1,(21-length($0))/2) $0; }'; \
cal | awk '{ getline; print " Mo Di Mi Do Fr Sa So"; getline; \
if (substr($0,1,2) == " 1")  print "                    1 "; \
do { prevline=$0; if (getline == 0) exit; print " "\
substr(prevline,4,17) " " substr($0,1,2) " "; } while (1) }' | \
awk -v cday=`date "+%d"` '{ fill=(int(cday)>9?"":" ");    \
a=$0; sub(" "fill int(cday)" ","*"fill int(cday)"*",a); print  a }'
 
  • Like
Reaktionen: Mac 2.2

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Danke für die ausführliche Antwort. Mich würde einmal interessieren, auf welches Aktualisierungsintervall du zB. das linke Skript gestellt hast, und wie die CPU-Last dabei aussieht.

Ich habe mich immer bisher davor gescheut, so riesige Skripte mit kurzen Intervallen laufen zu lassen...
Kurze Aktualisierungen sind ja nur bei wenigen Werten auf deiner linken Seite sinnvoll / nötig, nur es ist sehr aufwendig, nen homogenes Layout dann mit sehr vielen kleinen Skripten zu basteln.

Weiter möchte ich auf den Wiki-Artikel verweisen, den ich angelegt habe: http://www.apfeltalk.de/wiki/index.php?title=Geektool
Es wäre klasse, wenn auch noch weitere User den Artikel um das eine oder andere nützliche Skript erweitern würden. Dann hätten wir ne umfangreiche Sammlung, zum nachschauen.
(Aber bitte nicht so ne riesigen Pakete aus verschiedensten Infos wie im Post über mir eintragen... :-D )
 

Samsas Traum

Pommerscher Krummstiel
Registriert
24.04.08
Beiträge
3.025
Frisch gebastelt, hatte erst eine unschöne PHP Lösung, nun als leicht zu editierendes und überschaubares AppleScript, welches alle Möglichen Informationen zu euren RapidShare Accouts ausgibt.
Was konfiguriert werden muss ist im Script erklärt. Verschiedene Informationen einfach am Anfang Ein-/Ausblendbar.
Im Geektool lediglich noch
Code:
 osascript PFADzumSCRIPT
ausführen.

Hier das Script:
Code:
-- ANFANG KONFIGURATION ! (Ender der Konfiguration ausgewiesen)

-- Kontoangaben:

-- Kontotyp (prem = Premium; col = Collectors)
set Typ to "prem oder col"
-- Benutzername oder ID
set Benutzername to "Dein Benutzername"
-- Passwort
set Passwort to "Dein Passwort"

--Gewünschte Parameter (Soll angezeigt werden = y; soll nicht angezeigt werden = ""):

-- Account ID
set AccountID to "y"
-- Account Typ
set AccountTyp to "y"
-- Account wurde erstellt am:
set Beginn to "y"
-- Account läuft ab am:
set Ende to "y"
-- Benutzername
set User to "y"
-- Antihack (Security Lock) Ein/Aus
set antihack to "y"
-- registrierte eMail Adresse:
set mail to "y"
-- Free Rapidpoints
set frp to "y"
-- Premium Rapidpoints
set prp to "y"
-- Gespeicherte Dateien (Anzahl)
set dateien to "y"
-- Verbrauchter Space
set usedspace to "y"
-- Verbleibender TrafficShare
set TrafficShare to "y"
-- Verbleibender Traffic
set Traffic to "y"

-- ENDE KONFIGURATION !

-- Informationen abrufen
set details to do shell script "curl \"https://api.rapidshare.com/cgi-bin/rsapi.cgi?sub=getaccountdetails_v1&login=" & Benutzername & "&password=" & Passwort & "&type=" & Typ & "\"" as text

-- Daten definieren (ID)

set AppleScript's text item delimiters to "="
set idredu to text item 2 of details
set AppleScript's text item delimiters to "
"
set resid to text item 1 of idredu
if AccountID = "y" then
	set EId to "ID: " & resid & "
"
else
	set EId to ""
end if

-- Daten definieren (Account Typ)

set AppleScript's text item delimiters to "="
set typredu to text item 3 of details
set AppleScript's text item delimiters to "
"
set restyp to text item 1 of typredu
if AccountTyp = "y" then
	if restyp = "prem" then
		set ETyp to "Kontotyp: Premium" & "
"
	else
		set ETyp to "Kontotyp: Collector" & "
"
	end if
else
	set ETyp to ""
end if
-- Daten definieren (Account Erstellung)

set AppleScript's text item delimiters to "="
set beginnredu to text item 5 of details
set AppleScript's text item delimiters to "
"
set resbeginnepoch to text item 1 of beginnredu

set einEpochString to do shell script "echo '" & resbeginnepoch & "'" -- current epoch time as string
set h to do shell script "date -r " & einEpochString & " \"+%Y %m %d %H %M %S\""
set resbeginn to current date
set year of resbeginn to (word 1 of h as integer)
set month of resbeginn to (word 2 of h as integer)
set day of resbeginn to (word 3 of h as integer)
set hours of resbeginn to (word 4 of h as integer)
set minutes of resbeginn to (word 5 of h as integer)
set seconds of resbeginn to (word 6 of h as integer)
if Beginn = "y" then
	set EBeginn to "Account erstellt am: " & resbeginn & "
"
else
	set EBeginn to ""
end if


-- Daten definieren (Account läuft aus)

set AppleScript's text item delimiters to "="
set enderedu to text item 6 of details
set AppleScript's text item delimiters to "
"
set resendeepoch to text item 1 of enderedu

set einEpochString2 to do shell script "echo '" & resendeepoch & "'" -- current epoch time as string
set h to do shell script "date -r " & einEpochString2 & " \"+%Y %m %d %H %M %S\""
set resende to current date
set year of resende to (word 1 of h as integer)
set month of resende to (word 2 of h as integer)
set day of resende to (word 3 of h as integer)
set hours of resende to (word 4 of h as integer)
set minutes of resende to (word 5 of h as integer)
set seconds of resende to (word 6 of h as integer)
if Ende = "y" then
	set EEnde to "Account läuft ab am: " & resende & "
"
else
	set EEnde to ""
end if

-- Daten definieren (Benutzername)

set AppleScript's text item delimiters to "="
set benutzernameredu to text item 7 of details
set AppleScript's text item delimiters to "
"
set resbenutzername to text item 1 of benutzernameredu
if User = "y" then
	set EBenutzername to "Benutzername: " & resbenutzername & "
"
else
	set EBenutzername to ""
end if

-- Daten definieren (Anti-Hack/Security Lock)

set AppleScript's text item delimiters to "="
set antihackredu to text item 10 of details
set AppleScript's text item delimiters to "
"
set resantihack to text item 1 of antihackredu
if antihack = "y" then
	if resantihack = "0" then
		set EAntihack to " Security Lock: Inaktiv 
"
	else
		set EAntihack to "Security Lock: Aktiv 
"
	end if
else
	set EAntihack to ""
end if

-- Daten definieren (registrierte e-Mail Adresse)

set AppleScript's text item delimiters to "="
set mailredu to text item 14 of details
set AppleScript's text item delimiters to "
"
set resmail to text item 1 of mailredu
if mail = "y" then
	set EMail to "Registrierte Mail Adrsse: " & resmail & "
"
else
	set EMail to ""
end if

-- Daten definieren (Free RapidPoints)

set AppleScript's text item delimiters to "="
set frpredu to text item 15 of details
set AppleScript's text item delimiters to "
"
set resfrp to text item 1 of frpredu
if frp = "y" then
	set EFrp to "Free RapidPoints: " & resfrp & "
"
else
	set EFrp to ""
end if


-- Daten definieren (Premium RapidPoints)

set AppleScript's text item delimiters to "="
set prpredu to text item 16 of details
set AppleScript's text item delimiters to "
"
set resprp to text item 1 of prpredu
if prp = "y" then
	set EPrp to "Premium RapidPoints: " & resprp & "
"
else
	set EPrp to ""
end if

-- Daten definieren (Anzahl hochgeladener Dateien)

set AppleScript's text item delimiters to "="
set dateienredu to text item 17 of details
set AppleScript's text item delimiters to "
"
set resdateien to text item 1 of dateienredu
if dateien = "y" then
	set EDateien to "Dateien Online: " & resdateien & "
"
else
	set EDateien to ""
end if

-- Daten definieren (Benutzter Space)

set AppleScript's text item delimiters to "="
set usedspaceredu to text item 18 of details
set AppleScript's text item delimiters to "
"
set resusedspace to text item 1 of usedspaceredu
set EUsedspace2 to resusedspace / 1000 as string
if usedspace = "y" then
	set EUsedspace to "Benutzter Space: " & EUsedspace2 & " MB" & "
"
else
	set EUsedspace to ""
end if

-- Daten definieren (Traffic Share)

set AppleScript's text item delimiters to "="
set trafficshareredu to text item 19 of details
set AppleScript's text item delimiters to "
"
set restrafficshare to text item 1 of trafficshareredu
set ETrafficShare2 to restrafficshare / 1000 as string
if TrafficShare = "y" then
	set ETrafficShare to "TrafficShare: " & ETrafficShare2 & " MB" & "
"
else
	set ETrafficShare to ""
end if

-- Daten definieren (Traffic übrig)

set AppleScript's text item delimiters to "="
set trafficredu to text item 20 of details
set AppleScript's text item delimiters to "
"
set restraffic to text item 1 of trafficredu
set ETraffic2 to restraffic / 1000 as string
if Traffic = "y" then
	set ETraffic to "Verbleibender Traffic: " & ETraffic2 & " MB"
else
	set ETraffic to ""
end if

return EId & ETyp & EBeginn & EEnde & EBenutzername & EAntihack & EMail & EFrp & EPrp & EDateien & EUsedspace & ETrafficShare & ETraffic

Hier auch zum Download:
RapidShare.scpt

und so kann das ganze aussehen:

bildschirmfoto2010-03-01cx.png
 
Zuletzt bearbeitet:

h0sch1

Braeburn
Registriert
28.03.06
Beiträge
42
@naich

Die linke Seite lasse ich alle 10sec. aktualisieren.
Das ist soweit ganz OK. (CPU Last 1-2% für 1-2Sek.)
Bei vielen Shell Scripten, hast du das Problem, dass die Bash mehrmals ausgeführt wird und somit mehr Speicher + CPU frisst.
Ist ja klar, oder?
Bei mir läuft die Bash nur 1x alle 10Sek. für die linke Anzeige, wenn du die gleichen Info's mit z.B. 5 einzelnen Scripts lösen möchtest
und ebenfalls alles alle 10Sek aktualisierst, würde bei dir die Bash 5x mehr Ressourcen fressen.

Die rechte Seite wird unterschiedlich aktualisiert:
- Wetter alle 10min.
- Kalender nur beim starten
- ICal jede Stunde
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Bei vielen Shell Scripten, hast du das Problem, dass die Bash mehrmals ausgeführt wird und somit mehr Speicher + CPU frisst.
Ist ja klar, oder?
Bei mir läuft die Bash nur 1x alle 10Sek. für die linke Anzeige, wenn du die gleichen Info's mit z.B. 5 einzelnen Scripts lösen möchtest
und ebenfalls alles alle 10Sek aktualisierst, würde bei dir die Bash 5x mehr Ressourcen fressen.

Da hast du Recht, wenn alle alle 10 sec aktualisieren.

Ich habe aber eher daran gedacht, schnell ändernde Sachen, zB. die Netzwerk-Auslastung, schneller zu aktualisieren (vielleicht alle 5 sek.), und die eher statischen, wie IP-Adresse bla.... dann nur alle 10 Minuten oder so.

Aber letztendlich ist das sicher auch egal, spüren wird man da mit Sicherheit keine bessere CPU-Last bei der einen oder anderen Variante. :-D

ZZt, muss ich einfach einiges trennen, was zusammen gehört, weil ich bzgl. Schriften und Layout Unterschiede brauche.