1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

kein Ruhezustand (wg. Samba Freigabe?) - Alternative gesucht

Dieses Thema im Forum "AppleScript" wurde erstellt von muetze, 03.02.07.

  1. muetze

    muetze Zuccalmaglios Renette

    Dabei seit:
    16.05.06
    Beiträge:
    254
    Hi,

    der Ruhezustand will nicht so richtig, so lange meine Samba Freigabe aktiv ist - und darauf liegen meine iTunes Songs - also ist sie immer aktiv (per Sleepwatcher wird die Freigabe bei Beendigung des Rugezustandes gemountet).

    Ich überlege, mir per AppleScript einen eigenen Ruhezustand zu basteln. Dazu ein paar Fragen:

    0. Hat Jemand Erfahrungen mit dieser Idee - oder einen allgemeinen Rat?
    1. Kann man per AS feststellen, wann der letzte Tastendruck bzw. Mausbbewegung war?
    2. Kann man die Prozessorauslastung abfragen (große Auslastung - kein Ruhezustand wg. irgendwelcher Aktivität)? Am besten natürlich für jedern Prozess einzeln.
    3. Kann man vielleicht sogar feststellen, ob alle Programme im Idle-Modus sind (falls es so etwas gibt)?
    4. Kann man fetstellen, ob OS X versucht hat, den Ruhezustand herzustellen und woran es gescheitert ist - dann kann man das per AS erledigen)?
    5. Was ist noch zu beachten?
    6. Wieso kann OS X das nicht selbst?

    Weiterhin muss ich noch testen, ob

    a) iTunes ein Lied spielt,
    b) ob ChronoSync synchronisiert,
    c) weitere Programm/Probleme ergeben sich im Betrieb.

    Ich bin gespannt
    muetze
     
  2. hubionmac

    hubionmac Rheinischer Krummstiel

    Dabei seit:
    25.06.04
    Beiträge:
    379
    nö, viel zu komplex für AppleScript... wenn Du sicher gehen willst, dass Dir der Ruhezustand nicht aus versehen aktiviert wird...
    Ich würde mal einen richtigen Programmierer fragen, ob man nicht via Cocoa auslesen kann, welches Programm gerade aktiv ist.
    Oder die Lösung anders herum. Wenn kein Zugriff auf die Freigabe, dann diese unmounten.. sozusagen das Problem an der Wurzel packen und nicht drum rum programmieren.
    iTunes sollte die Freigabe automatisch öffnen, sofern es auf eine Datei darauf zugreifen möchte und mit dem Schlüsselbund kannst du die Anmeldung (kennwort) automatisieren.... funktioniert zumindest bei Apple-Shares so.
     
  3. muetze

    muetze Zuccalmaglios Renette

    Dabei seit:
    16.05.06
    Beiträge:
    254
    Danke,

    das trifft eigentlich meine Bedenken. Wie kann ich iTunes beibringen, die Freigabe zu mounten, wenn es einen Song spielen will?

    Beim Starten von iTunes muss die Freigabe auch gemountet sein, da sonst alle songs ein Ausrufezeichen haben, dass bei nachträglichem mounten nicht verschwindet. Das Spielen eines tracks funktioniert zwar, vor dem nächsten bleibt das Abspielen aber stehen.

    Momentan probiere ich systematisch, welche Programme den Ruhezustand alles behindern (gibt es irgendwo eine Liste?):

    Wake On Lan
    Chicken of the VNC
    (to be continued...)

    muetze
     
  4. muetze

    muetze Zuccalmaglios Renette

    Dabei seit:
    16.05.06
    Beiträge:
    254
    Ich muss die Programme, die angeblich den Ruhezustand verhindern, zurücknehmen.
    Das war zwar in dem Moment reproduzierbar so (Programm starten - kein Ruhezustand, Programm schließen - Ruhezustand usw.). Heute funktioniert der Ruhezustand aber trotz der laufenden Programme, wobei Chicken on the VNC keine Verbindung zu einem VNC-Server aufgebaut haben darf - es muss also inaktiv laufen.

    Auch WakeOnLAN (jetzt mit Version 0.89) lässt den Ruhezustand zu.

    Wie gut, dass Computer keine deterministischen Maschinen sind.

    muetze
     
  5. muetze

    muetze Zuccalmaglios Renette

    Dabei seit:
    16.05.06
    Beiträge:
    254
    Lösung gefunden

    Hi,

    ich habe jetzt eine Lösung für mein Problem gefunden, dass der Ruhezustand wegen der bestehen Verbindung zu einem Netzwerklaufwerk (nötig für iTunes Library) nicht eingeleitet wird.

    Mit Sleepwatcher trenne ich die Netzwerkverbindung nach 10 Minuten idletime, d.h. wenn 10 Minuten keine Taste gedrückt wurde. Dabei startet Sleepwatcher ein AppleScript
    Code:
    tell application "Finder"
    	try
    		eject "NAME DES VOLUMES"
    		
    		set anzeigetext to "Das Volume \"Name des Volumes\" wurde nach idle-time entfernt." & return & ¬
    			return & ¬
    			"Soll das Volume \"Name des Volumes\" wieder gemountet werden?" & return
    		set antwort to display dialog anzeigetext buttons {"Yes", "No", "Cancel"} default button "Yes" giving up after 30
    		if (button returned of antwort) is "Cancel" then
    			-- do nothing
    		else if (button returned of antwort) is "No" then
    			-- do nothing
    		else if (button returned of antwort) is "Yes" then
    			open "Automount.app"
    		end if
    		
    	end try
    end tell
    Solange iTunes Lieder abspielt, kann das Laufwerk nicht getrennt werden - es ist gesperrt. Sollte ich 10 Minuten vor dem Rechner sitzen und ohne Tastendruck auf den Bildschirm starren, so kann ich das Laufwerk einfach wieder mounten. Das Script Automount lautet
    Code:
    tell application "Finder"
    	try
    		mount volume "smb://Servername/Freigabenname"
    	end try
    end tell
    Beide Scripe sind als ausführbare Programme gespeichert. Das Script Automount wird auch über Sleepwatcher als wakeup-Event aufgerufen, so dass das Volume nach dem Aufwachen immer verfügbar ist.

    Da ich im deutschsprachigen Internet keinen Hinweis gefunden habe, wie man mit Sleepwatcher einen idle-time-Event festlegt, hole ich das hier nach:

    Nach der Installation von Sleepwatcher gibt es die beiden (versteckten) Dateien ~/.wakeup und ~/.sleep - beide sind leer. In sie kann man Befehe eintragen, die beim Einschlafen bzw. Aufwachen aus dem Ruhezustand ausgeführt werden sollen. .sleep bleibt leer und in .wakeup steht nur
    Code:
    open "/Pfad zur Datei/Automount.app"
    Analog wird eine Datei .idle angelegt und ausführbar gemacht (chmod +x .idle). Diese wird von der Datei /etc/rc.idle aufgerufen. rc.idle gibt es noch nicht und wird durch Kopieren der datei rc.sleep erzeugt. In ihr muss in drei Zeilen der String ".sleep" durch ".idle" ersetzt werden - auch diese daze muss ausführbar sein. rc.idle wird vom startupitem SleppWatcher über die Datei /Library/StartupItem/SleepWatcher/SleepWatcher aufgerufen. An zwei Stellen wird in dieser Datei eine Zeile erweitert und "-t 6000 -i /etc/rc.idle" hinzugefügt. -t 6000 ist der Timer für die idle-Zeit (6000=600 Sekunden), nach der die Datei "-i /etc/rc.idle" augerufen wird.
    Code:
    {
    	ConsoleMessage "Starting Sleep Watcher"
    	/usr/local/sbin/sleepwatcher -d -V -s /etc/rc.sleep -w /etc/rc.wakeup -t 6000 -i /etc/rc.idle
    	/etc/rc.wakeup
    	return 0
    }
    
    . /etc/rc.common
    
    StartService ()
    {
    	ConsoleMessage "Starting Sleep Watcher"
    	/usr/local/sbin/sleepwatcher -d -V -s /etc/rc.sleep -w /etc/rc.wakeup  -t 6000 -i /etc/rc.idle
    	/etc/rc.wakeup
    	return 0
    }
    Für die Parameter von Sleepwatcher siehe auch "man sleepwatcher" im Terminal; SleepWatcher unterstützt die Events

    - beim Einschalten des Ruhezustandes
    - beim Aufwachen aus dem Ruhezustand
    - nach einer idle-time (selbst zu bestimmen)
    - beim Dimmen des Displays
    - beim "Un-Dimmen" des Displays
    - beim Einschlafen des Displays
    - beim Aufwachen des Displays

    Und bei jedem Event kan man beliebige Terminal Commandos, AppleScripte oder Programme laufen lassen - damit lässt sich viel anstellen. Vielen Dank für das tolle Programm.

    Das wars.

    muetze
     
    #5 muetze, 05.02.07
    Zuletzt bearbeitet: 05.02.07

Diese Seite empfehlen