FTP = verbleibender Speicherplatz abfragen

Lord_Icon

Member
Hi,

ich schiebe täglich ein Sicherung auf einen externen Backup Server.

Hier steht natürlich nur begrenzt Platz zur Verfügung.

Da das Backup-Script mir auch täglich ein Statusbereicht mit schickt würde ich hier noch gern den Verbleibenden Restspeicherplatz mit ausgeben lassen.

Nur FTP kann das anscheind nicht. Zumindest hab ich in den Manuells nichts gefunden.

Weiß einer Rat?
Oder hat einer einer Idee, wie ich das anderweitig bewerkstelligen kann ?

P.s. is n Strato Rechner
 
Hallo,
ich hab dafür folgende Zeile im crontab:

Code:
23 5    * * *   root  echo "Backup-FTP:" && echo du . | lftp -u USER,PASS IPADDR  | awk -v LIMIT="50" '$1~/[0-9]+/ {QUOTA=LIMIT*1024*1024; print (QUOTA-$1)/1024/1024 " GB left"}' | tail -1

USER, PASS und IPADDR sind durch deine Angabenzu ersetzen. Und du brauchst lftp.

Gruß porki
 
Hi,

dank dir. Das ganze funzt wunderbar.

Bei dein Cron verstehe ich den Sinn aber nicht ganz. Du läßt diesen Befehl mittels cron ausführen.

Du erhälst eine entsprechende echo Ausgabe. Aber wer sieht die denn?
Schaust du täglich deine Logs durch und suchst nach der Ausgabe ?

Oki... ich hab bzw. ich wollte das ganze dann umstellen, so das ich die Ausgabe mit in mein Backup-Script drin hab.

so sehen die Code Zeilen aus (nur die relavanten)

Code:
#Ermittlunf des verbleibenden Speicherplatzes auf den Backup-Server
spaceleft= 'du . | lftp -u <user>,<pass> backup.serverkompetenz.de | awk -v LIMIT="50" '$1~/[0-9]+/ {QUOTA=LIMIT*1024*1024; print (QUOTA-$1)/1024/1024 " GB left"}' | tail -1'

echo "VERBLEIBENDER SPEICHERPLATZ AUF DEN BACKUP-SERVER: $spaceleft " > $MAILdatei

cat $MAILdatei | mail -s "STRATO Backup OK" *******@web.de

Leider klappt das nicht.

Manuell Ausgeführt bekomme ich zurück:
-bash: syntax error near unexpected token `QUOTA-$1'

Vermute mal die ' die falsch gesetzt worden sind (?)
 
Hööö ?

Lese bitte nochmal.

Er gibt ja nur ... ein
23 5 * * * root echo "Backup-FTP:" && echo du

Sprich: ich sehe hier nix, wo er sich mittels | mail -s.... eine Email zukommen lässt
 
Lese bitte nochmal.
Lies doch mal die man-page von cron. Dann wirst Du sehen, dass cron standardmäßig die Ausgaben (stdout und stderr) des aufgerufenen Programms per Mail an den Besitzer verschickt, sofern man es nicht durch entsprechend gesetzte Umgebungsvariablen verbietet.
 
Hab zwar indivuduelle Scritpe.... schaue mir aber gern welche an.
Welche schlägst du vor ?


P.s.keiner eine Idee bezüglixh des Fehlers
 
Also ich hab jetzt ALLE Konstellationen mit ' und ` durch.

Bei ein Variante kommt zwar kein Error... aber die Ausgabe ist nicht korrekt.


Code:
spaceleft= `du . | lftp -u <user>,<pass> backup.serverkompetenz.de | awk -v LIMIT="50" '$1~/[0-9]+/ {QUOTA=LIMIT*1024*1024; print (QUOTA-$1)/1024/1024 " GB left"}' | tail -1`
Unbekannter Befehl »4«.
Unbekannter Befehl »16«.
Unbekannter Befehl »20«.
Unbekannter Befehl »4«.
Unbekannter Befehl »24«.
Unbekannter Befehl »8«.
Unbekannter Befehl »4«.
Unbekannter Befehl »16«.
Unbekannter Befehl »48«.
Unbekannter Befehl »52«.


Kann mir einer den Befehl sauber mit ' ` versehen ?
 
Die Version mit den Backticks ist jetzt schon richtig ;) Allerdings ist der Inhalt darin etwas sinnlos. Was soll es bringen, die Ausgabe von "du ." an stdin des ftp-Programms weiterzuleiten?
Zum Debuggen solltest Du mal die einzelnen Teile der Pipeline separat testen und schauen welche Eingaben erwartet und welche Ausgaben produziert werden.
 
Allerdings ist der Inhalt darin etwas sinnlos. Was soll es bringen, die Ausgabe von "du ." an stdin des ftp-Programms weiterzuleiten?

Versteh ich nicht, auf was du hinaus möchtest ?

"du" ist doch der Befehl zur Anzeige des verbleibenden Festplattenspeichers.

Ergo brauch ich den. Da ich nicht den Speicherplatz vom System sondern vom remoute FTP abfragen möchte.
 
ahhh.... damit kommen wir der Sache schon ein klein wenig näher.

Code:
spaceleft= `echo du . | lftp -u <user>,<pass> backup.serverkompetenz.de | awk -v LIMIT="50" '$1~/[0-9]+/ {QUOTA=LIMIT*1024*1024; print (QUOTA-$1)/1024/1024 " GB left"}' | tail -1`
-bash: 26,0785: command not found

Wofür steht denn 26,0785 ?

Sowas hatte ich als Fehlermeldeung ja noch nie.

26zigstes Zeichen ? und 0785 :confused:
 
Mach mal nur ein
Code:
echo du . | lftp -u <user>,<pass> backup.serverkompetenz.de
Damit müsstest du dann sehen, wieviel Speicher aktuell belegt ist.

Mit dem LIMIT="50" setzt du eine Variable. Hier trägst du ein, wieviel FTP-Speicher (in GB) dir zur Verfügung steht.

Das QUOTA=LIMIT*1024*1024 rechnet dir die Größe in Bytes um.
Und das print (QUOTA-$1) ist eine einfache mathematische Formel. :D

Dieses 26,078 ist also das Ergebnis = dein freier Speicher auf dem FTP-Server in GB. Anscheinend möchte bash dies als Befehl ausführen. Du hast da irgendwo noch einen Fehler in den Hochkommas.
 
Vielleicht fängst du erstmal an, den ganzen Kram als Script untereinander zu schreiben, statt alles in eine Zeile zu quetschen.
Dann verstehst du vielleicht auch, was du (respektive das Script) da eigentlich macht. ;)
 
DAAAAANKeeeeeee

So klappt das ganze. Es darf kein Leerzeichen zwischen spaceleft= 'du sein.

Code:
spaceleft=`echo du . | lftp -u <user>,<pass> backup.serverkompetenz.de | awk -v LIMIT="50" '$1~/[0-9]+/ {QUOTA=LIMIT*1024*1024; print (QUOTA-$1)/1024/1024 " GB left"}' | tail -1`

echo $spaceleft
26,0785 GB left
 
Last edited by a moderator:
Back
Top