Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Applescript: Wie Dropbox Status abfragen?
Applescript: Wie Dropbox Status abfragen?
P.Si
16.02.10
11:32
Hallo,
ich bräuchte Hilfe mit Applescript, da ich vermutlich wieder mal das unmögliche möchte.
Es gibt viele Shutdownprogramme, die meisten mit Timerfunktion, doch dies kann ich nicht brauchen.
Meine Situation:
Ich speichere diverse Daten auf Dropbox, um diese zuhause wie auch an der Arbeit präsent zu haben. Nun habe ich ein kleines Script geschrieben, das mir zwei Anwendungen schliesst, damit diese mit Dropbox synchronisiert werden. Wenn ich nun aber den Rechner herunterfahre, würgt es die Synchronisation ab, was natürlich nicht wirklich toll ist.
Es kann auch vorkommen, dass gerade grössere mengen an Daten synchronisiert werden und ich nicht immer warten möchte, bis diese beendet sind. Ich möchte einfach nur das Script starten und diese beendet die vorgegebenen Programme und sollte nun noch überprüfen, ob Dropbox noch synchronisiert oder schon fertig ist. Wenn die Synchronisation beendet ist, fährt das Script den Rechner herunter.
Bis auf das Problem mit Dropbox, habe ich alles hinbekommen, was durch "copy&paste" auch nicht wirklich schwierig war.
Ist dies überhaupt möglich?
Kann ich den Status abfragen?
Kann ich überprüfen, ob er gerade mit dem Internet kommuniziert? Wenn ja wie?
Ich wäre für hilfreiche Tipps und Lösungen sehr Dankbar und natürlich auch auf Programme, die schon existieren und das gleiche tun.
Schon mal vielen Dank.
P.Si
Hilfreich?
0
Kommentare
bmc desgin
16.02.10
23:13
Dazu musstest du abfragen, ob dropbox gerade Daten synct...
Bei AppleScript wäre das unter der Unix Ebene möglich...
Hatte das mal mit nem shoutcast Server gemacht...
Cheers
„Ask your questions...“
Hilfreich?
0
P.Si
17.02.10
10:30
Danke Dir bmc design
Hast Du mir evtl. einen Anhaltspunkt, wonach ich suchen muss?
Befehle im Unix, mit denen man sich näher befassen muss, um ans Ziel zu gelangen?
Von UNIX hab ich gar keine Ahnung, würde aber gerne versuchen es mit ein paar Tipps selbst zu lösen.
Vielleicht hat noch jemand eine Idee.
PS:
bmc design: Hab gerade in Dein Profil geschaut und war erstaunt. Wie hast Du es nur geschafft, Dich im '09 zu Registrieren obwohl Deine letzte Anmeldung im '02 war?
Hilfreich?
0
P.Si
17.02.10
16:00
So, nun habe ich unter UNIX und Applescript schon einige Ansätze gefunden, bin aber nach so vielen Webseiten/Foren/möglichkeiten ziemlich verwirrt und muss mich etwas erholen.
Ich hatte die Idee, Dropbox zu beenden, sobald er/es auf "Idle" geht, doch dies ist nie der Fall.
Nun ist die Programm Auslastung <0.5 %, wenn nichts zu tun ist und beim Synchronisieren ist die Auslastung >10%.
Eine möglichkeit ist nun zu schauen, ob Dropbox <1% Auslastung erzeugt und dann zu beenden.
Wie ich das nun feststellen kann, muss ich noch schauen. Vielleicht hat jemand eine Idee.
P.Si
Hilfreich?
0
_mäuschen
17.02.10
17:46
set app_name to "Dropbox"
set limit to 1
set cpu_usage to 100
set app_pid to do shell script ("ps auxww | grep '[/]" & app_name & "'" & " | awk '{print $2}'")
if app_pid is greater than 0 then
repeat until cpu_usage is less than limit
set cpu_usage to (do shell script ("ps -c -o %cpu='' -p " & app_pid)) as integer
delay 1
end repeat
end if
Hilfreich?
0
P.Si
17.02.10
23:33
_mäuschen: Ich verneige mich vor Dir und Danke Dir, dass Du mir gleich das ganze Script lieferst.
Ich habe es gerade mal bis "top" und "ps" geschafft, leider sind alle versuche gescheitert.
Ich habe das Script nun mal 1:1 übernommen und erhalte folgende fehlermeldung(auch als Programm gespeichert):
ps: Invalid process id: 846\r837
Prozess-ID
846: dbfseventsd
837: Dropbox
Ich werde mal versuchen, zu verstehen, wie das Script genau funktioniert, vielleicht finde ich ja das Problem.
Nochmals vielen Dank an Dich _mäuschen
P.Si
Hilfreich?
0
P.Si
17.02.10
23:58
Dies ist, was das Event-Protokoll vom Scripteditor listet:
tell current application
do shell script "ps auxww | grep '[/]Dropbox' | awk '{print $2}'"
"846
837"
do shell script "ps -c -o %cpu='' -p 846
837"
"ps: Invalid process id: 846\\r837"
Hilfreich?
0
P.Si
18.02.10
00:13
Wenn ich nun in folgender Zeile den PID direkt eingebe, dann funktioniert es einwandfrei.
set cpu_usage to (do shell script ("ps -c -o %cpu='' -p " & 837)) as integer
Mal schauen, ob ich es hinbekomme.
Hilfreich?
0
_mäuschen
18.02.10
00:37
Nach einem Neustart wird die PID eine andere sein.
Was geschieht, wenn Du zum Test
set app_name to "Mail"
eingibst?
Hilfreich?
0
P.Si
18.02.10
00:59
Ja, das ist mir klar, habe es nur mal so versucht, um zu schauen, ob es mit der aktuellen PID funktioniert.
Mit Mail sieht das Ergebnis wie folgt aus:
tell current application
do shell script "ps auxww | grep '[/]Mail' | awk '{print $2}'"
"5587"
do shell script "ps -c -o %cpu='' -p 5587"
" 0.0"
end tell
Funktioniert ohne Fehler.
Hilfreich?
0
P.Si
18.02.10
09:12
Was ich bis jetzt herausgefunden habe ist, dass
dbfseventsd
als root und
Dropbox
als User (also in meinem Fall als Patrick) gestartet wird.
Soviel ich verstanden habe, ruft
ps auxww
alle PIDs von allen Benutzern auf. Nun müsste man eigentlich nur nach den PIDs vom Benutzer suchen können.
Ich habe versucht, es mit
-u UserID
und anderen Optionen zu filtern, bin aber kläglich gescheitert.
Entweder erhalte ich gar keinen Wert oder die gleichen zwei wie mit
ps auxww
.
Ich spüre, dass ich dem Ziel trotzdem immer näher komme.
Hilfreich?
0
P.Si
18.02.10
10:24
Problem gelöst:
Ich habe zwar NULL Ahnung von UNIX, aber auch ein blindes Huhn findet mal ein Korn im Heu.
Das ganze Script sieht nun so aus:
set app_name to "Dropbox"
set user to do shell script "whoami"
set limit to 1
set cpu_usage to 100
set app_pid to do shell script ("ps auxww | grep '[/]" & app_name & "'" & " |
grep '" & user & "' | awk '{print $2}'")
if app_pid is greater than 0 then
repeat until cpu_usage is less than limit
set cpu_usage to (do shell script ("ps -c -o %cpu='' -p " & app_pid)) as integer
delay 1
end repeat
end if
Nochmals besten Dank an _mäuschen für die Super Hilfeleistung, hoffentlich kann ich mich mal bei Dir revanchieren.
Gruss
P.Si
Hilfreich?
0
_mäuschen
18.02.10
10:42
Ev. nur
u
do shell script "ps u | grep '[/]Dropbox' | awk '{print $2}'"
Hilfreich?
0
P.Si
18.02.10
21:17
_mäuschen: Ich habe einige Optionen versucht, unter anderem auch diese, hat aber nicht funktioniert.
Mit dem Zusatz
grep '" & user & "'
funktioniert es wunderbar.
PS: Dieses Profilbild gefällt mir schon viel besser.
Nochmals Danke.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
iPad Pro M4: Hinweise auf geringere Nachfrage
Erscheint das neue MacBook Air M4 früher als an...
Apple veröffentlicht iOS 18.2, iPadOS 18.2 und ...
Apple gewährt Einblick in Audio- und Video-Test...
Update-Abend: macOS 15.1.1, iOS 18.1.1, iPadOS ...
Mac mini M4: Reparaturhandbuch bestätigt austau...
Mac OS X: 25 Jahre Aqua, 25 Jahre Dock
Facebook & Instagram: Zuckerberg kündigt Aus de...