Freien HD Speicher täglich protokollieren

N

nilsbyte

Mitglied
Thread Starter
Dabei seit
31.05.2005
Beiträge
88
Reaktionspunkte
2
Hallo liebe Macuser,

Ich bin auf der Suche nach einem Weg, wie ich täglich den freien Speicher des XServe in unserer Firma in eine Textdatei schreiben kann.

Ein Freund hat mir bereits folgendes gegeben:

Code:
df -m / | grep '/' | awk {'print $4 " MB"'} >> test.txt

Hierbei gefällt mir nur nicht die Art der Anzeige. Ich stelle mir sowas in der Art vor:

Code:
Volume      Speicher gesamt                      Freier Speicher		   Prozent frei

/HD         3.001.666.743.828 byte (2,73 TB)    661.467.913.256 byte (616,04 GB)   X %

Hat dafür jemand ne Lösung? Vielleicht auch ein Tool was das macht? Oder gehts sogar mit Automator?

Thanks in advance :D
 
Hallo!
Nur mal als Frage: Würde Dir da ein Widget nicht auch reichen? Da gibt es einige (z.B. iStat pro; iStat nano).
Gruss
der eMac_man
 
Es geht ja um das textuelle Protokollieren und da wären die Widgets nicht wirklich was.

@nilsbyte: Man kann die Ausgabe auch mit 'df' und 'awk' entsprechend formatieren, also beispielsweise Tabs einfügen, dann würde die Ausgabe ja schon wie gewünscht erscheinen.
 
tigion schrieb:
Es geht ja um das textuelle Protokollieren und da wären die Widgets nicht wirklich was.

@nilsbyte: Man kann die Ausgabe auch mit 'df' und 'awk' entsprechend formatieren, also beispielsweise Tabs einfügen, dann würde die Ausgabe ja schon wie gewünscht erscheinen.


leider hab ich aber keine ahnung von applescript und wie ich das so formatiere dass der speicher in gb und tb umgerechnet wird, bzw die bytes mit trennpunkten ausgegeben werden. vielleicht möchte mir jemand dabei helfen? ;)
 
Hallo,

Code:
try
	set pfadDesk to (path to desktop) as string
	set pfadTargetFile to pfadDesk & "HDD-Info.txt" as file specification
end try

tell application "Finder"
	try
		set gesamtSpeciher to round ((capacity of disk 1) / 1024 / 1024)
		set belegterSpeciher to round ((free space of disk 1) / 1024 / 1024)
		
		set prozentSpeciher to ((belegterSpeciher / gesamtSpeciher) * 100) as integer
		
		set pruefDatum to current date
		set pruefZeile to (pruefDatum & "		" & belegterSpeciher & " MB 		" & prozentSpeciher & " % 		" & gesamtSpeciher & " MB 		") as string
		
		my schreibeNeuePruefung(pruefZeile, pfadTargetFile)
	end try
end tell

on schreibeNeuePruefung(schreibeZeile, pfadTargetFile)
	try
		open for access pfadTargetFile with write permission
		write "Datum:  					Freier Speicher: 	Prozent: 	Gesamt Speciher:" & return to pfadTargetFile starting at eof
		write "--------------------------------------------------------------------------------------------------------" & return to pfadTargetFile starting at eof
		write schreibeZeile & return to pfadTargetFile starting at eof
		write "" & return to pfadTargetFile starting at eof
		close access pfadTargetFile
	on error
		try
			display dialog "Fehler beim Schreiben des aktuellen Datensatzes." with icon 0 giving up after 1
			close access pfadTargetFile
		end try
	end try
end schreibeNeuePruefung

Viel Spass
 
Im Anhang als Applikation.
Einfach entpacken und doppelklicken.

Viel Spass
 

Anhänge

  • HDD-Info.zip
    24,4 KB · Aufrufe: 56
nilsbyte schrieb:
leider hab ich aber keine ahnung von applescript und wie ich das so formatiere dass der speicher in gb und tb umgerechnet wird, bzw die bytes mit trennpunkten ausgegeben werden. vielleicht möchte mir jemand dabei helfen? ;)

df erlaubt auch das Ausgabeformat in GB:

Code:
df -h
 
little_pixel schrieb:
Hallo,

Code:
try
	set pfadDesk to (path to desktop) as string
	set pfadTargetFile to pfadDesk & "HDD-Info.txt" as file specification
end try

tell application "Finder"
	try
		set gesamtSpeciher to round ((capacity of disk 1) / 1024 / 1024)
		set belegterSpeciher to round ((free space of disk 1) / 1024 / 1024)
		
		set prozentSpeciher to ((belegterSpeciher / gesamtSpeciher) * 100) as integer
		
		set pruefDatum to current date
		set pruefZeile to (pruefDatum & "		" & belegterSpeciher & " MB 		" & prozentSpeciher & " % 		" & gesamtSpeciher & " MB 		") as string
		
		my schreibeNeuePruefung(pruefZeile, pfadTargetFile)
	end try
end tell

on schreibeNeuePruefung(schreibeZeile, pfadTargetFile)
	try
		open for access pfadTargetFile with write permission
		write "Datum:  					Freier Speicher: 	Prozent: 	Gesamt Speciher:" & return to pfadTargetFile starting at eof
		write "--------------------------------------------------------------------------------------------------------" & return to pfadTargetFile starting at eof
		write schreibeZeile & return to pfadTargetFile starting at eof
		write "" & return to pfadTargetFile starting at eof
		close access pfadTargetFile
	on error
		try
			display dialog "Fehler beim Schreiben des aktuellen Datensatzes." with icon 0 giving up after 1
			close access pfadTargetFile
		end try
	end try
end schreibeNeuePruefung

Viel Spass

cool :) dafür erstmal 1000 Dank. Noch 3 Fragen habe ich:

- Kann ich die MB mit Trennpunkten ausgeben lassen? (1.024 MB)
- Wie kann ich, wenn ich den Wert in GB umrechne, auf 2 nachkommastellen runden?
- Sehe ich das richtig dass das sone Art IF Sache ist? Beim erneuten ausführen werden die Spaltenüberschriften erneut geschrieben, das sollte aber nicht so sein.

little_pixel, hast du noch die Lösung für diese 3 Probleme? Wäre toll.
 
Zuletzt bearbeitet:
Schöne Aufgabe :) Im Prinzip hat littel_pixel ja schon die ganze Arbeit gemacht. Ohne ihm Konkurrenz machen zu wollen, hier einfach noch was ich heute nachmittag unabhängig am PC zusammengehackt hatte. Die GB-Umrechnung ist schon vorhanden. Wie Du richtig gesehen hast, wäre das Problem der wiederholten Spaltenüberschriften einfach durch einen If-Block zu lösen, der überprüft ob es den Reportfile schon gibt oder nicht...
set check to do shell script "df -m /"
set cd to (current date) as string
set par to paragraph 2 of check

set ts to (((word -4 of par) as integer) / 1000) as string
set ts to (characters 1 thru -2 of ts) as string
set totalspace to ("Speicher total: " & ts & " GB")

set us to (((word -3 of par) as integer) / 1000) as string
set us to (characters 1 thru -2 of us) as string
set usedspace to ("Belegt: " & us & " GB")

set fs to (((word -2 of par) as integer) / 1000) as string
set fs to (characters 1 thru -2 of fs) as string
set freespace to ("Frei: " & fs & " GB")

--set percent to (word -1 of par) & " %"
set report to (cd & return & totalspace & " - " & usedspace & " - " & freespace & return & return)

tell application "Finder"
*****if not (exists item "diskreport.txt" of desktop) then
**********set repFile to (make new file at desktop with properties {name:"diskreport.txt"}) as alias
*****else
**********set repFile to item "diskreport.txt" of desktop as alias
*****end if
*****open for access repFile with write permission
*****write report to repFile starting at eof
*****close access repFile
end tell

-------------------------
[This script was automatically tagged for color coded syntax by Convert Script to Markup Code]

Frohes schaffen
Farid
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

natürlich habt Ihr recht :)
Ist "nur" ein Lösungsansatz bzw. Vorschlag. Auf die Details habe ich mich nicht festgelegt, da ich dachte das es individuell angepasst wird.

Farid seine Lösung ist die schönere! :)


Viele Grüße

PS: "Jon's little page" habe ich noch gar nicht gekannt. Find' ich schön und interessant.
 
little_pixel schrieb:
Farid seine Lösung ist die schönere! :)
(...)
PS: "Jon's little page" habe ich noch gar nicht gekannt. Find' ich schön und interessant.
Ne! :D Das schöne an AS ist ja gerade, daß es wirklich viele Wege gibt, die nach Rom führen, und Deine Lösung funktioniert doch hervorragend.
Der Rest ist Feinschliff, und dann hat wahrscheinlich jeder auch noch seine eigenen stilistischen Vorlieben. Ich fänd's gut, wenn in diesem Forum auch öfter mal verschiedene Ansätze und Lösungen diskutiert würden.

PS: Jon's Little Page is wirklich sehr gut - der Autor ist auch häufig mit sehr guten Beiträgen im Forum von macscripter.net zu Gast.

Good scripting
Farid
 
Danke chebfarid und little_pixel für eure Scripts, ihr habt mir sehr weitergeholfen, eines der Scripts kommt auf unserem Server auf jeden Fall zum Einsatz!
 
Schöne Aufgabe :) Im Prinzip hat littel_pixel ja schon die ganze Arbeit gemacht. Ohne ihm Konkurrenz machen zu wollen, hier einfach noch was ich heute nachmittag unabhängig am PC zusammengehackt hatte. Die GB-Umrechnung ist schon vorhanden. Wie Du richtig gesehen hast, wäre das Problem der wiederholten Spaltenüberschriften einfach durch einen If-Block zu lösen, der überprüft ob es den Reportfile schon gibt oder nicht...


-------------------------
[This script was automatically tagged for color coded syntax by Convert Script to Markup Code]

Frohes schaffen
Farid

Jetzt mag ich aber trotzdem wissen wie ich die Datei statt auf dem Desktop woanders speichern kann. ;-)
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ganz einfach :)

Code:
set pfadDesk to "MacBook:Users:ICH:Documents:"

Setze Deinen gewünschten Pfad ein.

Viel Erfolg!
 
Zurück
Oben Unten