Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : OS-Skripting mit AppleScript, DCOM, D-Bus etc.



Jesus_666
11.07.2007, 12:55
Ich hatte bis vor Kurzem ein "Problem": Um an der Uni ins VPN (= ins Internet) zu kommen mußte ich auf das AirPort-Symbol in der Menüleiste klicken; "AirPort aktivieren" auswählen; warten, bis ich eine Verbindung habe; das Internetverbindungssymbol anklicken und dann "Verbinden" auswählen.

Die Lösung war am Ende verdammt einfach. Zuerst braucht man die XNetwork-Skripterweiterung (http://www.lestang.org/rubrique14.html). Die kommt nach (~)/Library/Scripting Additions (anlegen, falls nicht existent) und erlaubt es, AirPort per AppleScript anzusteuern. Das Skript selbst ist simpel:

try
tell application "Internet Connect"
if state of status of current configuration is 8 then
disconnect
delay 1 -- warten, bis VPN abgebaut ist
stop airport
else -- alles außer 8 gilt als disconnected
start airport
delay 4 -- warten, bis AirPort tut
connect
end if
quit application
end tell
end tryEs startet Internet Connect (aka Internetverbindung), holt sich den aktuellen Verbindungszustand und... naja, der Rest ist selbsterklärend. Status 8 ist eine stehende Verbindung, 0 ist keine Verbindung und alles dazwischen irgendein Zwischenstadium.

Das Skript lasse ich mir von Butler (http://www.manytricks.com/butler/) auf einen Hotkey binden und schon reicht eine Tastenkombination, um VPN und AirPort zu steuern. Ja, ich weiß, daß Quicksilver Hotkeys kann, aber ich will nur einen Hotkeymanager und keine Studie in postmoderner Philosophie, danke sehr. Butler ist zwar überladen, aber nicht ganz so schlimm wie Quicksilver.


BTW, die Version ohne VPN würde so aussehen:

try
if is airport working then
stop airport
else
start airport
end if
end try


Verwendet ihr derartige Skripte selber? Habt ihr welche, von denen die Welt wissen müßte? Her damit.

dead_orc
16.07.2007, 23:50
Interessantes Thema. Und da du im Titel schon D-Bus ansprichst, möchte ich doch gleich mal fragen, ob jemand Erfahrung damit hat, in der D-Bus Session eines Users als root rumzuwurschteln. Ich will das nicht zum BOFH-spielen, sondern um meinen gnome-screensaver beim Ausschalten des Bildschirms automatisch zu locken. Im Moment sieht das so aus, aber das finde ich einfach nur http://www.multimediaxis.de/images/smilies/old/smilie_06.gif

if [ `pidof gnome-screensaver` ]; then
xpid=$(pgrep -u $user gnome-screensav)
xdisp=$(awk 'BEGIN{RS="\\000";FS="="}($1 == "DISPLAY"){print $2}' < /proc/$xpid/environ)
xauth=$(awk 'BEGIN{RS="\\000";FS="="}($1 == "XAUTHORITY"){print $2}' < /proc/$xpid/environ)
xdbus=$(awk 'BEGIN{RS="\\000";FS="="}($1 == "DBUS_SESSION_BUS_ADDRESS"){print $2"="$3"="$4}' < /proc/$xpid/environ)
if [ -z "$xauth" ] ; then
xhome=$(awk 'BEGIN{RS="\\000";FS="="}($1 == "HOME"){print $2}' < /proc/$xpid/environ)
xauth="$xhome/.Xauthority"
fi

DISPLAY=$xdisp XAUTHORITY=$xauth DBUS_SESSION_BUS_ADDRESS=$xdbus su $user -c "$(command -v gnome-screensaver-command) --lock"
fi
(teilweise aus den Scripts der Ubuntu Distro geklaut)

Ansonsten *kratz* Ich hab mir n kleines Script geschrieben dass den Lüfter meines Thinkpads über die /proc/acpi/ibm/fan Datei kontrolliert und benutzerdefinierte Modi setzt (low-noise, low-temp) und damit den Lüfter der Gewalt des normalen Steuerungschips entreißt, aber das ist an sich nix weiter als ne Reihe von if/else