GeekTool - Scripte und Layouts

Von AppleSkript & Automator bis hin zu Objective C

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Mo 21. Jan 2013, 18:28

hmm, vielleicht fehlt dem Script die Shebang? Das glaube ich, weil das Script bei mir funktioniert, bei Dir aber die Farbdarstellung versagt.

Also los: Debugging! Lade zuallererst mal irgend ein Unix oder Linux (möglichst große Datei z.B. diese) via Torrent herunter und schraub die Bandbreite am Torrent-Client klein, damit Du schön lange Datenverkehr hast.

Zurück ins Script: schreib mal als erste Zeile
Code: Alles auswählen
#! /bin/bash

und als vorletzte Zeile statt
Code: Alles auswählen
echo "\n"

Code: Alles auswählen
echo " $mykbin\n"

So kann man die Auslastung (in Prozent) als Zahl sehen.
Wenn nichts passiert, dann schreib die "echo " $mykbin\n" vor die Schleife (am besten vor die "declare" Zeile).

Edit: Toten Torrent-Link gegen funktionierenden ausgetauscht: jetzt die Knoppix-Linux-DVD (3.82 GB; KNOPPIX_V7.0.5DVD-2012-12-21-DE).
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon Du bist der App Store » Mo 21. Jan 2013, 18:45

bei diesem code
#! /bin/bash
INTF=en0
kbmax=722
myvar1=`netstat -ib | grep -e "$INTF" -m 1 | awk '{print $7}'` # bytes in
sleep 1
myvar2=`netstat -ib | grep -e "$INTF" -m 1 | awk '{print $7}'` # bytes in
subin=$(($myvar2 - $myvar1))
kbin=`echo "scale=0; $subin/1024;" | bc | sed -e 's/^\(\..*$\)/0/'`
mykbin=$((100 * $kbin / $kbmax))

if [ $mykbin -ge "100" ]
then
   mykbin=100
fi
echo " $mykbin\n"

declare -i a=5
while [ $a -lt $mykbin ]
do
   echo "|\c"
   a=`expr $a + 5`
done
echo "\033[1;31m|\033[0m\c"
while [ $a -lt 100 ]
do
   echo "\033[1;30m|\033[0m\c"
   a=`expr $a + 5`
done
unset a
kommt leider nur das raus:
Benutzeravatar
Du bist der App Store
Mitglied
Mitglied
 
Beiträge: 719
Registriert: Sa 11. Aug 2012, 09:52
Wohnort: Ruhrpott

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Mo 21. Jan 2013, 18:58

Oh je! Okay, liegt es an der Farbdarstellung?
Dieses Test-Script sollte die Balken darstellen, der rote bei 50%
Code: Alles auswählen
#! /bin/bash
mykbin=50

declare -i a=5
while [ $a -lt $mykbin ]
do
   echo "|\c"
   a=`expr $a + 5`
done
echo "\033[1;31m|\033[0m\c"
while [ $a -lt 100 ]
do
   echo "\033[1;30m|\033[0m\c"
   a=`expr $a + 5`
done
echo "\n"
unset a

Bei mir siehts so aus:
Balken50.jpg
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon Du bist der App Store » Mo 21. Jan 2013, 19:01

den Balken habe ich auch so...wie bei dir
Benutzeravatar
Du bist der App Store
Mitglied
Mitglied
 
Beiträge: 719
Registriert: Sa 11. Aug 2012, 09:52
Wohnort: Ruhrpott

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Mo 21. Jan 2013, 19:05

Yey! Dann setz kbmax auf 100, also so:
Code: Alles auswählen
#! /bin/bash
INTF=en0
kbmax=100
myvar1=`netstat -ib | grep -e "$INTF" -m 1 | awk '{print $7}'` # bytes in
sleep 1
myvar2=`netstat -ib | grep -e "$INTF" -m 1 | awk '{print $7}'` # bytes in
subin=$(($myvar2 - $myvar1))
kbin=`echo "scale=0; $subin/1024;" | bc | sed -e 's/^\(\..*$\)/0/'`
mykbin=$((100 * $kbin / $kbmax))

if [ $mykbin -ge "100" ]
then
   mykbin=100
fi
echo " $mykbin\n"

declare -i a=5
while [ $a -lt $mykbin ]
do
   echo "|\c"
   a=`expr $a + 5`
done
echo "\033[1;31m|\033[0m\c"
while [ $a -lt 100 ]
do
   echo "\033[1;30m|\033[0m\c"
   a=`expr $a + 5`
done
unset a

Jetzt?!!1#!
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon Du bist der App Store » Mo 21. Jan 2013, 19:11

jetzt sieht es so aus, aber bleibt immer gleich...
Benutzeravatar
Du bist der App Store
Mitglied
Mitglied
 
Beiträge: 719
Registriert: Sa 11. Aug 2012, 09:52
Wohnort: Ruhrpott

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Mo 21. Jan 2013, 21:07

Nach einem erneuten Download der Knoppix-DVD (...) habe ich den Fehler replizieren können. Es fehlt eigentlich "nur" gegen Ende das Echo
Code: Alles auswählen
echo "\n"


Bei mir funktioniert der folgende Code fehlerfrei
Code: Alles auswählen
#! /bin/bash
INTF=en0
kbmax=100
myvar1=`netstat -ib | grep -e "$INTF" -m 1 | awk '{print $7}'` # bytes in
sleep 1
myvar2=`netstat -ib | grep -e "$INTF" -m 1 | awk '{print $7}'` # bytes in
subin=$(($myvar2 - $myvar1))
kbin=`echo "scale=0; $subin/1024;" | bc | sed -e 's/^\(\..*$\)/0/'`
mykbin=$((100 * $kbin / $kbmax))

if [ $mykbin -ge "100" ]
then
   mykbin=100
fi

declare -i a=5
while [ $a -lt $mykbin ]
do
   echo "|\c"
   a=`expr $a + 5`
done
echo "\033[1;31m|\033[0m\c"
while [ $a -lt 100 ]
do
   echo "\033[1;30m|\033[0m\c"
   a=`expr $a + 5`
done
echo "\n"
unset a


JETZT!!1#

Wenns läuft nur noch die kbmax anpassen, aber erst dann...
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon Du bist der App Store » Di 22. Jan 2013, 07:24

Der Balken ist da, bewegt sich aber nicht vorwärts...
Benutzeravatar
Du bist der App Store
Mitglied
Mitglied
 
Beiträge: 719
Registriert: Sa 11. Aug 2012, 09:52
Wohnort: Ruhrpott

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Do 24. Jan 2013, 10:22

Du hast ein funktionierendes Netzwerkscript (das eine Zahl ausspuckt) und Du hast die Balken, und beides funktioniert. Jetzt schaffst Du den Rest alleine: Do it! Probier aus! Erforsche! Viel Spass!
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Do 7. Feb 2013, 19:10

Vor ein paar Tagen funktionierte mein CAL Script nicht mehr, und zwar am 1. Februar. Bis heute ging es auch nicht, jetzt habe ich mal nachgesehen und den Fehler entdeckt.
Hier das alte Script:
Code: Alles auswählen
#!/bin/bash
cal | awk '{ print " "$0; 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) }' | GREP_COLOR="1;32" grep -E --color=always "\b`date +%e`\b|$"

Das Problem war offenbar das Leerzeichen, denn "date +%e" ergibt eben " 7". Mit dem guten alten sed kann man das Leerzeichen jedoch leicht entfernen und das CAL-Script geht wieder:
Code: Alles auswählen
#!/bin/bash
export LC_TIME=de_DE
cal | awk '{ print " "$0; 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) }' | GREP_COLOR="1;32" grep -E --color=always "\b`date +%e|sed -e 's/ //'`\b|$"
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon sedl » Fr 9. Aug 2013, 16:51

Auf Wunsch wieder auf.
sedl
Moderator
Moderator
 
Beiträge: 10313
Registriert: Di 31. Aug 2004, 08:43
Wohnort: Zuhause

Re: GeekTool - Scripte und Layouts

Beitragvon Trixie » Fr 9. Aug 2013, 16:56

Hi, habe ein Problem mit einem kleinen Wetter-Script:
Code: Alles auswählen
curl -s 'http://thefuckingweather.com/?where=Waldeck\&unit=c | grep '"content\|"remark\|"flavor\|span' | sed 's/<[^>]*>//g;s/&\#176/°/;s/^['$'\t'']*//g;/^[[:space:]]/d' -e 's/fucking/bucking/'

Habe es hier gefunden: http://www.macosxtips.co.uk/geeklets/weather/improved-the-fcking-weather/
und leicht modifiziert damit es zu meinem Design passt.
Leider bekomme ich weder mit meiner angepassten Version noch mit dem Original eine Ausgabe, es tut sich rein gar nichts.
Hat jemand eine Idee und kann mir helfen?

Edit: Habe ein Bild mit meinem aktuellen Setup hinzugefügt um zu zeigen wieso ich die kleine Änderung eingebaut habe ;-)
Benutzeravatar
Trixie
Besucher
Besucher
 
Beiträge: 1
Registriert: Fr 9. Aug 2013, 16:32
Wohnort: Ponyville

Re: GeekTool - Scripte und Layouts

Beitragvon Gast » Sa 17. Aug 2013, 02:33

Hallo Trixie,

die fucking Weather-Seite blockiert die Anfrage, da ein User Agent HTTP-Header fehlt. Den kann man curl bei der Anfrage mitgeben:
Code: Alles auswählen
curl -s -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112" "http://thefuckingweather.com/?where=Waldeck&unit=c" | grep -E '(content|remark|flavor)' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed -e 's/&\#176;/°/;s/^[[:space:]]*//'

Grüßt: Anon.
Gast
 

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » Di 27. Aug 2013, 14:40

Hier noch mit Entfernung der Leerzeilen:
Code: Alles auswählen
curl -s -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112" "http://thefuckingweather.com/?where=Waldeck&unit=c" | grep -E '(content|remark|flavor)' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed -e 's/&\#176;/°/;s/^[[:space:]]*//;/^\s*$/d'
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon sedl » So 30. Nov 2014, 12:15

Auf Wunsch wieder auf.
sedl
Moderator
Moderator
 
Beiträge: 10313
Registriert: Di 31. Aug 2004, 08:43
Wohnort: Zuhause

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » So 30. Nov 2014, 22:38

Hier meine gebastelte Uhr, bei der die ":" in der Mitte im Sekundentakt blinken. Nach einigen Versuchen kam dieses Script heraus, das 1x pro Sekunde aufgerufen wird:

Code: Alles auswählen
#!/bin/bash

declare -r C0="\033[0m"      # "unchanged" colour
declare -r SW="\033[30m"      # black

# spit out in black
function blackOut { echo -e "${SW}$1${C0}"; }

# strip leading zero (w/o changing single 0)
function zeroOut { echo -e "$(( 10#$1 ))"; }   # strip leading zero

function schalter {
   # with seconds being even (gerade)
   if [ $(($(date +%s)%2)) -eq "0" ];then
      # spit ":" in "unchanged colour",
      echo ":";
   else
      # else print in black
      blackOut ":";
   fi
}

a=$(zeroOut "$(date +%H)");   # hour
b=$(schalter);            # blinking ":"
c=$(date +%M);            # minute

# spit it out, Smith!
echo "$a$b$c";
exit 0;


Ein kleines Problem ist, dass Geektool das Script aufruft, und dafür ein kleiner Sekundenbruchteil benötigt wird. Irgendwann addieren sich diese kleinen Bruchteile und dann kommt der Aufruf scheinbar zwischen den geraden/ungeraden Sekunden und die ":" blinken unregelmäßig. Besser geht es, wenn man eine Datei auf die Festplatte schreibt, aber wer will das schon? Hat jemand eine bessere Idee?
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Re: GeekTool - Scripte und Layouts

Beitragvon Anon » So 30. Nov 2014, 22:42

Übrigens danke, sedl!
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Vorherige

Zurück zu Skripte & Programmierung