Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Wie mit AppleScript die Uptime auslesen?

Wie mit AppleScript die Uptime auslesen?

iBook.Fan
iBook.Fan26.07.0500:52
ich möchte ein script schreiben, welches die uptime des systems ausgibt (also wenn man im terminal "uptime" eingibt, aber eben nur die zeit, nicht den rest der infos die man da noch angezeigt bekommt... hat da jemand ne idee??
0

Kommentare

rofl
rofl26.07.0502:28
Schau mal ob da Möglichkeiten wie "String methods" gibt, also Funktionen mit dem man Zeichenketten zerschnippeln kann.
0
Michael Schmidt
Michael Schmidt26.07.0513:01
Wie willst du den Wert denn zurückhaben?
In hh:mm:ss oder so, wie uptime den Wert liefert, nur gecuttet, also z.B.
14 days 12:43 ?

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
iBook.Fan
iBook.Fan26.07.0513:22
naja mit tagesangabe, also 14 days 12:43 würde mir reichen, problem is nur wie cute ich das...
0
Michael Schmidt
Michael Schmidt26.07.0513:26
getUptime()

on getUptime()
set upTime to do shell script "uptime"
set AppleScript's text item delimiters to ","
set firstPart to first text item of upTime
set AppleScript's text item delimiters to "up "
set timeInfo to second text item of firstPart
set AppleScript's text item delimiters to ""
return timeInfo
end getUptime


CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
rofl
rofl26.07.0515:15
agrajag

Ich hab es bis heute nicht wirklich gerafft, schon hundertmal probiert aber der Syntax ist so un-C-haft
0
pb_user
pb_user26.07.0515:22
Warum nicht UptimeInMenuBar verwenden? Wie es der Name schon sagt: Die Uptime läuft in der Menüleiste und zeigt genau das Gewünschte: Tag Stunden Minuten.
0
Michael Schmidt
Michael Schmidt26.07.0515:24
Applescript hat schon so einige witzige Sachen

Kleine Beispiele:
Mit item -1 erhält man bei einer Liste das letzte Item, mit item -2 das vorletzte etc.

Bei einer Schleife kann man einfach alle items einer Liste durchgehen mit einem counter von 1 bis Listenlänge. Ist die Liste leer (Listenlänge 0) wird die Schleife halt ohne Fehlermedlung übersprungen. Man muss also nicht vorher abfragen, ob die Liste leer ist.

Man kann mehreren Variablen gleichzeitig Werte zuweisen z.B.
set {var1, var2, var3} to {"abc","def","ghi"}

usw. usf.

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
Michael Schmidt
Michael Schmidt26.07.0515:48
Wenn es ein englischsprachiges Buch sein kann:
[ ]
Sehr cooles Buch mit sehr tiefgehenden, praxisnahen Beispielen.

Die deutschen Ausgaben hängen doch so ziemlich hinterher (

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
iBook.Fan
iBook.Fan28.08.0518:31
sorry das ich mich erst jetzt melde... irgendwie ist das in der versenkung verschwunden...
aber irgendwie klappt es noch nicht... hab da wohl noch nen fehler drinne

set apps_active to false
on getUptime()
set upTime to do shell script "uptime"
set AppleScript's text item delimiters to ","
set firstPart to first text item of upTime
set AppleScript's text item delimiters to "up "
set timeInfo to second text item of firstPart
set AppleScript's text item delimiters to " "
return timeInfo
end getUptime

tell application "Finder"
set curproc to (get name of every process)
if (curproc contains "Conversation") then
set apps_active to true
end if
end tell

if apps_active then
set theContents to getUptime()
tell application "Conversation"
send current conversation action theContents
end tell
end if

bezieht sich auf folgendes programm:
0
Rantanplan
Rantanplan28.08.0518:51
Hihi... Ich verdiene meine Brötchen mit (hauptsächlich) Softwareentwicklung und von Lisp und Smalltalk über Perl bis C/C++, Obj-C, Java, Pascal... weiß der Kuckuck... habe ich zu all diesen Programmiersprachen einen Draht. Aber AppleScript gibt bei mir nur Kopfschmerzen. Da sträubt sich mir jede Gehirnwindung Ich habs jedenfalls wieder aufgegeben und schreibe meine kleinen Tools weiterhin in Perl oder bash-Skript
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
rofl
rofl28.08.0521:14
Rantanplan

Tja AppleScript ist auch nicht für Programmierer gedacht, anders kann ich mir meine Probleme damit nicht erklären...
0
iBook.Fan
iBook.Fan28.08.0521:32
ok, ihr kommt also auch nicht damit klar... und ich dachte schon ich wär zu blöd dazu mit "richtigen" programmiersprachen hätte ich bei sowas denke keine probleme
0
iBook.Fan
iBook.Fan29.08.0511:26
doch, geht schon in die richtige richtung...

on getUptime()
set theResult to ""

set fields to do shell script "/usr/bin/uptime | wc -w | awk '{ print $1 }'" as string

-- There are 10 fields in uptime when the system has been up for less than a day.
-- 2 extra fields appear "xx days" when uptime is over a day.
if (fields is equal to "10") then
set days to "" as string
set hours to do shell script "/usr/bin/uptime | awk '{ print $3 }' | sed s/:.*//g" as string
set minutes to do shell script "/usr/bin/uptime| awk '{ print $3 }' | sed s/.*://g | sed s/,//g" as string
else
set days to do shell script "/usr/bin/uptime | awk '{ print $3 }'" as string
set hours to do shell script "/usr/bin/uptime | awk '{ print $5 }' | sed s/:.*//g" as string
set minutes to do shell script "/usr/bin/uptime| awk '{ print $5 }' | sed s/.*://g | sed s/,//g" as string
end if

if (length of days is greater than 0) then
set theResult to days & " days"
end if

if (length of hours is greater than 0) then
set theResult to theResult & " " & hours & " hours"
end if

if (length of minutes is greater than 0) then
set theResult to theResult & " " & minutes & " minutes"
end if

-- Remove possible leading space
if theResult begins with " " then
set theResult to characters 2 thru -1 of theResult as string
end if

return theResult
end getUptime


ps is aus nem adium ( www.adiumx.com ) script abgeschrieben und funktioniert wunderbar
0
iBook.Fan
iBook.Fan29.08.0512:15
joa nochmal danke an alle die geholfen haben
0
Agrajag26.07.0502:46
Also, die Uptime-Ausgabe kannst du schon mal so bekommen:

set temp to do shell script "uptime"

Wenn die Darstellungsbreite der eigendlichen Uptime nicht variieren würde, dann könnte man etwas in der Art schreiben:

set temp to do shell script "uptime | cut -c 12-15"

AppleScript kann auch Strings zerschneiden mit abgezählten Wörtern. Du kannst dir z.B. das dritte Wort in der vierten Zeile geben lassen). Ich hab das aber noch nie gemacht, da müsstest du dich selbst mal einlesen. bei den Developer Tools ist auch unzählige viel Doku dabei, u.a. auch für AppleScript.
0
Agrajag26.07.0515:12
AppleScript ist ja echt eine feine Sache, aber mit Ausdrücken wie

set AppleScript's text ...

rechne ich einfach nicht Wenn man von einer "normalen" Programmiersprache kommt, kann einem AS schon etwas "strange" vorkommen. Aber trotzdem cool. Wenn Apple AS endlich mal etwas mehr Geschwindigkeit beibringen könnte. Es ist ja so unendlich lahm.
0
Agrajag26.07.0515:37
Es hat wirklich viele nette Features (das mit item -1 ist wirklich gut -- merken). Nur leider ist die Referenz von Apple nicht wirklich gut. Ich finde aus diesem Buch (PDF) einfach nicht was ich brauche.

Hast du einen Buchtipp?
0
Davek
Davek28.08.0523:34
ich weiss nicht ob das was bringt?

#!/bin/sh

uptime | awk '{sub(/.*up[ ]+/,"",$0) ; sub(/,[ ]+[0-9]+ user.*/,"",$0);sub(/,/,"",$0) ;print $0}'
„Keep the Beat“
0
Davek
Davek29.08.0511:18
war wohl auch nicht das, was du gesucht hast iBook.Fan ?!
„Keep the Beat“
0
Davek
Davek29.08.0511:59
okay, dann klappt das also was du haben wolltest?!
„Keep the Beat“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.