Freier Speicher als Rückgabewert

SoulOfDarkness

SoulOfDarkness

Jungspund
Hallo,

Linux: CT-Debian-Server
Shell: Bash

im Geschäft, habe ich den Auftrag bekommen ein Sicherungsskript zu schreiben, dass Daten auf anderen Rechnern speichert oder auf CD brennt. Dazu zwei Fragen:

1. Teil des Skriptes ist es, dass ich die Medien auf noch verbleibenden Speicher abfrage. Gefunden habe ich dazu den "df" Befehl welcher mir die Infos bringt die ich brauche, aber wie kann ich die jetzt in einem String so speichern, dass ich ihn abgleichen kann mit Vorgabewerten, um ein Warning auszugeben, wenn der freie Speicher langsam zu gering wird?

2. Soll das Skript einen CD/DVD Brenner ansteuern und das Backup auf diese brennen, wie kann man das in Befehlen umsetzen?

Gruß Soul


PS: Wäre super nett, wenn ihr die Antworten auch kurz erläutern könntet, da ich erst seit ein paar Tagen mit Shell arbeite und mich wegen der Aufgabe damit einarbeiten muss.
 
Zuletzt bearbeitet:
Naja,

ich würde dafür Perl nehmen und nicht die Bash, aber sei es drum.

zu 1)

Code:
df_output=`df`

Dies führt den Befehl df aus (beachte die Backticks `` zur Befehlsausführung) und speichert die Ausgabe von df in df_output.

zu 2)

Schau dir mal cdrecord an, das kannst du über die Bash zum Brennen nutzen, bzw. siehe

Code:
man cdrecord

(muss natürlich installiert sein, wenn nicht findest du die manpage auch im Netz)
 
Naja,

ich würde dafür Perl nehmen und nicht die Bash, aber sei es drum.

zu 1)

Code:
df_output=`df`

Dies führt den Befehl df aus (beachte die Backticks `` zur Befehlsausführung) und speichert die Ausgabe von df in df_output.

zu 2)

Schau dir mal cdrecord an, das kannst du über die Bash zum Brennen nutzen, bzw. siehe

Code:
man cdrecord

(muss natürlich installiert sein, wenn nicht findest du die manpage auch im Netz)

Vielen Dank erstmal,
aber das mit dem df hatte ich schon raus, mein Problem ist, wie ich den Ausgabewert von df noch filtern kann...

Beispielweise:
Code:
FreierSpeicher=`df | grep hda1`
FreierSpeicher={FreierSpeicher#*hda1}
Dann habe ich die Zeile, aber diese nun so zerlegen, dass nur noch der freie Speicher in der Variable steht.

Nun kann ich die Variable ja auch so berarbeiten, dass ich Werte ausschneide:
Code:
FreierSpeicher=${FreierSpeicher##*hda1}
Aber das hilft hier nicht sehr weiter, da ich eine Menge Zahlen in der Zeile stehen habe.


Gruß Soul

PS: Bash war die Vorgabe der Aufgabe
 
Zuletzt bearbeitet:
Hallo
Zu deiner Brennerei, findest du zahlreiche Hinweise.
Einen z.B. hier

Was den Speichplatz auf den medien betrifft, kannst du die Ausgabe von df in eine Pipe leiten, und das gesuchte Feld herausschneiden.

W=90; #Warnlimit
df -P|sed -e '1d'|while read D S U A PE P;do if [ ${PE/\%/} -gt $W ]; then echo "PART $D fast voll: Benutzt ${PE}";fi;done
Das ist nur ein Beispiel von vielen.

df -P sollte klar sein. -P nur um Zeilenumbrüche zu vermeiden.
sed -e '1d ' schneidet die erste zeile weg (Kopf)
while read liest alles in die Variablen ein
if [ ${PE/\%/} -gt $W ] Vergleicht das Prozentfeld mit Warnwert W. Vorher ersetze ich das % durch Nichts, um eine Zahl zu bekommen.
siehe (Veriablenexpansion der Bash)


Der Rest sollte klar sein.


Wenn du nur bestimmt Partitionen brauchst, kannst du ein grep vor das while read setzen.
Gruß Wolfgang
 
Vielen Dank, auch euch beiden, ich werde eure Lösungsmöglichkeiten mal aufgreifen und ausprobieren. Bisher habe ich es mal so übernommen:

Code:
# Auszug aus TEMPCONF: [I]Warnlimit:90[/I]
while read line ; do Warnlimit=`grep "Warnlimit:"` done < $TEMPCONF;
#
WARNLIMIT = ${WARNLIMIT##*:}
#
df -P|sed -e '1d'|while read D S U A PE P;do 
                          if [ ${PE/\%/} -gt $WARNLIMIT ]; 
                            then echo "PART $D fast voll: ${PE} Prozent benutzt." >> $LOG;
                          fi;
                  done
 
Hallo,

zum brennen ist cdrecord nur für CDs geeignet. Für DVDs gab es mal cdrecord-ProDVD, dessen Funktionalität inzwischen in wodim bzw. cdrkit übernommen wurde. Zusätzlich gibt es noch dvdrecord (dvdrtools) und die dvd+rw-tools.
Außerdem gibt es eine ganze Reihe an skriptfähigen Backuplösungen, die auch CD/DVD unterstützen.

Gruß
XL
 
Vielen Dank, ich die Programme werde ich wohl nehmen, wenn es so klappt wie es soll. Muss nur noch die Infrastruktur für die Tests her. :)

Gruß Soul
 
Zurück
Oben