Script läuft nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
noxx
Beiträge: 46
Registriert: 15.05.2013 20:45:38

Script läuft nicht

Beitrag von noxx » 26.04.2014 21:06:36

Hallo,

ich habe mir hier ein Script zusammengeschustert, leider läuft es nicht. Trage ich die Befehle
in mehrere Cronjobs ein, läuft jeder einzelne durch. Bin leider wenig erfahren mit den Scripten,
evtl kann mir einer auf die Sprünge helfen.

Das Script:

Code: Alles auswählen

#!/bin/sh

# Mounte sFTP Server
echo 123456 | sshfs -o password_stdin root@192.168.1.77:/ /mnt/meteo

# Pause
sleep 10

# Lösche alte *.tar >30 Tage
find /media/122dcdde-c327-4fd2-9ead-bd1112223334/Dokumente/Meteo/ -type f -name "*.tar" -mtime +30 |xargs -i rm {}

# Backup Meteo Home Verzeichnis
tar -cf /media/122dcdde-c327-4fd2-9ead-bd1112223334/Dokumente/Meteo/`date "+%F"`-home.tar /mnt/meteo/home

# Backup Meteo Data Verzeichnis
tar -cf /media/122dcdde-c327-4fd2-9ead-bd1112223334/Dokumente/Meteo/`date "+%F"`-data.tar /mnt/meteo/data

# Trenne sFTP Server
fusermount -u /mnt/meteo
Die Ausgabe:

Code: Alles auswählen

root@Server:~# sh /bin/meteo.sh
: not foundub.sh: 2:
': No such file or directorymeteo
: not foundub.sh: 5:
sleep: ungültiges Zeitintervall „10\r“
„sleep --help“ gibt weitere Informationen.
: not foundub.sh: 8:
: not foundub.sh: 11:
tar: Entferne führende „/“ von Elementnamen
tar: /mnt/meteo/home\r: Kann stat nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
: not foundub.sh: 14:
tar: Entferne führende „/“ von Elementnamen
tar: /mnt/meteo/data\r: Kann stat nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
: not foundub.sh: 17:
 not mounted/mnt/meteo
root@Server:~#

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Script läuft nicht

Beitrag von Cae » 26.04.2014 21:22:04

Code: Alles auswählen

$ dos2unix {dein-script}
anwenden, mit {dein-script} als Dateinamen. So Zeugs sollte man nur mit einem Editor anfassen, der vernuenftige Zeilenenden unterstuetzt.

Verraeterisch war das \r in

Code: Alles auswählen

sleep: ungültiges Zeitintervall „10\r“
sowie die "uebereinander gedruckten" Meldungen (\r bewegt den Cursor an den Zeilenanfang).

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

noxx
Beiträge: 46
Registriert: 15.05.2013 20:45:38

Re: Script läuft nicht

Beitrag von noxx » 27.04.2014 12:41:37

Danke, habs nunmal neu mit nano gemacht, läuft besser.

Einzig diesen Fehler bekomme ich nicht raus:

Code: Alles auswählen

tar: Entferne führende „/“ von Elementnamen

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: Script läuft nicht

Beitrag von peschmae » 27.04.2014 12:48:21

Das ist nur ein Hinweis, keine Fehlermeldung. Der will nur sagen, dass die Dateien im tar mit relativen Pfaden gespeichert werden (also ohne den führenden /). Das heisst wenn du das nachher irgendwo entpackst, werden die Dateien im aktuellen Arbeitsordner in mnt/meteo/blabla landen, und nicht in /mnt/meteo/blabla (ausser du wechselst vorher nach /)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

noxx
Beiträge: 46
Registriert: 15.05.2013 20:45:38

Re: Script läuft nicht

Beitrag von noxx » 27.04.2014 14:01:54

und wie bekomme ich das ganze "sauber" ?

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Script läuft nicht

Beitrag von Cae » 27.04.2014 17:15:58

Naja, der offensichtlichste Weg ist, absolute Pfade zu vermeiden, indem man vorher in das Root-Vezeichnis wechselt:

Code: Alles auswählen

~$ tar cf /tmp/bin0.tar /bin
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
~$ cd /
/$ tar cf /tmp/bin1.tar bin
/$ tar tf /tmp/bin0.tar | head -2
bin/
bin/bzcmp
/$ tar tf /tmp/bin1.tar | head -2
bin/
bin/bzcmp
/$ 
Mit -C laesst sich das automatisieren, aber ich finde es eher verwirrend [1]:

Code: Alles auswählen

~$ tar cf /tmp/bin2.tar -C / bin
~$ tar tf /tmp/bin2.tar | head -2
bin/
bin/bzcmp
~$ 
(keine entsprechende Meldung erscheint, trotz gleichem Ergebnis)

Gruss Cae

[1] insbesondere, weil es eine Bedeutung hat, an welcher Stelle das -C / in der Kommandozeile steht
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten