• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Variablenübergabe an "mget" (cadaver)

Aus einem Script wird über „awk“ die erste Spalte einer Ausgabedatei ausgelesen.
Ich möchte nun alle Zeichenketten, die in dieser Spalte „aaaaa“ enthalten, dem Befehl mget übergeben, d.h. über cadaver sollen diese heruntergeladen und lokal gespeichert werden.
Code:
var=$(cat $SUCHE | awk '{print $1}'|grep  "aaaaa") 
eval `<$var awk '{ print "var=\""$0"\"" }'`
cd ~/WEBDAV/
mkdir tmp
cd ~/WEBDAV/tmp/
cadaver -t  << EOF
mget $var
quit
EOF
Für die erste Datei mit diesen Eigenschaften (*aaaaa) erfolgt der Download ohne Probleme.
Allerdings können die nachfolgenden Dateien nicht verarbeitet werden.
Code:
dav:/Sicherung/> mget 28032012183313aaaaaa
Downloading `/Sicherung/28032012183313aaaaaa' to 28032012183313aaaaaa:
Progress: [=============================>] 100,0% of 104857600 bytes succeeded.
dav:/Sicherung/> 28032012183313aaaaab
Unrecognised command. Type 'help' for a list of commands.
dav:/Sicherung/> 28032012183313aaaaac
Unrecognised command. Type 'help' for a list of commands.
dav:/Sicherung/> quit
Connection to `webdav.mediencenter.t-online.de' closed.
Hat jemand eine Idee, wie ich cadaver davon überzeugen kann, auch den Rest herunterzuladen?
 

framp

Moderator
Teammitglied
Deinen Code verstehe ich zugegebenermassen nicht :eek:ps: . Ich würde entweder
1) das Script mit
Code:
bash -xv {scriptname}
aufrufen und mir die Ausgaben ansehen (Du siehst den Inhalt der Vars und was ausgeführt wird) und findest damit raus was falsch läuft oder
2) Du beschreibst uns was Du genau machen willst, denn ich habe das Gefühl dass das was Du erreichen willst etwas einfacher geht
 
A

Anonymous

Gast
Pitti 1 schrieb:
Code:
var=$(cat $SUCHE | awk '{print $1}'|grep  "aaaaa") 
eval `<$var awk '{ print "var=\""$0"\"" }'`

also die erste Zeile noch umständlicher schreiben geht kaum,
Soweit SUCHE einen Dateiname enthält reicht folgendes dafür vollkommen aus.
Code:
var=$(awk '$1 ~ "aaaa" {print $1}' $SUCHE)
was du mit eval `<$var awk '{ print "var=\""$0"\"" }'` anfangen willst erschließt sich weder aus meiner magischen Glaskugel noch meiner Bash :???: das ist für mich eine nicht eindeutige Umleitung.

Solltest du damit etwa bezwecken wollen, Alles was die erste Befehlszeile ausgegeben hat in nur eine Zeile zu bringen, dann würde ich die erste Zeile wie folgt schreiben
Code:
var=$(awk '$1 ~ "aaaaa" {printf "%s ",$1};END {print}' $SUCHE)
dann kannst du dir die 2. Zeile komplett sparen

robi
 
Erstmal Danke für die schnellen Antworten.
Das Ganze soll Bestandteil eines komplexen Scriptes werden:
http://www.linux-club.de/viewtopic.php?p=720736#p720736
Einfach Mindcrypt herunterladen, cadaver installieren, .netrc / .cadaverrc erstellen und loslegen.

Wie dort schon beschrieben, werden nach dem Upload auf eine Online-Festplatte und der anschließenden Entschlüsselung Protokolldateien erstellt, welche neben der kompletten Struktur des Archivordner auch den 20-stelligen Code des Dateinamens enthält (Beispiel):
Code:
07012012102739aaaaaa
07012012102739aaaaab
.:
insgesamt 4,0K
   0    07.01.2012 11:04 Uhr +
4,0K  07.01.2012 11:04 Uhr Linux

./Linux:
insgesamt 126M
44M 09.10.2009 05:50 Uhr 2009 LINUX die Reise des Pinguins Teil1.mp4
50M 09.10.2009 06:07 Uhr 2009 LINUX die Reise des Pinguins Teil2.mp4
34M 09.10.2009 05:58 Uhr 2009 LINUX die Reise des Pinguins Teil3.mp4
Das Script funktioniert ohne Probleme. (Link zum Script: http://nopaste.info/74ded229e3.html).

Nachträglich wollte ich nun eine Automatisierung des Downloads erreichen; analog dem Upload (Zeile 17. bzw 56 ). Nach der Suche (ab Zeile 85) soll aus dem Protokoll der 20-stellige Code ausgelesen werden und nunmehr den Download automatisieren. Wie lässt sich das letztendlich realisieren?
 
A

Anonymous

Gast
Pitti 1 schrieb:
Das Script funktioniert ohne Probleme. (Link zum Script: http://nopaste.info/74ded229e3.html).

Ich glaube da wirst du sehr schwer Hilfe bekommen. Ein Script mit so viel "cd" "mv" und "rm -rf" und dann noch so unübersichtlich geschrieben :???: :???: :???: :???: :???: :???: :???:

Ich glaube nicht das sowas sich jemand zum testen und für Verbesserungen freiwillig auf seinen Rechner läd.

robi
 
robi schrieb:
Ich glaube nicht das sowas sich jemand zum testen und für Verbesserungen freiwillig auf seinen Rechner läd.
Die Befürchtungen hatte ich eingangs auch.
Letzten Endes entstand das Ganze aus einer Not heraus: http://www.linux-club.de/viewtopic.php?f=69&t=114387
Nachträglich wurden dann Zeilen hinzugefügt und geändert - nicht nach programmiertechnischen Aspekten,
sondern eher nach Lust und Laune und damit leider auf Kosten der Übersichtlichkeit
:eek:ps:
@robi: Die von Dir geposteten Zeilen brachten mich auf alle Fälle einen Schritt weiter.
Bis zur vollständigen Umsetzung müssen noch copy&paste herhalten.
Im Endeffekt ist entscheidend, dass es funkioniert und das ist (eigenartiger Weise) der Fall...
:schockiert:
Ich hätte es lediglich zum Anlass genommen, an diesem Wochenende wieder einmal daran "herumzuspielen".
Allerdings kann man die Zeit auch nutzbringender verstreichen lassen.
:D

Nochmals danke.

(Setze Beitrag als "erledigt")
 
Gelegentlich soll es ja auch ganz ratsam sein, seinen Verstand zu gebrauchen. :irre:

Was liegt also näher, als den 20-stelligen Code zu markieren,
in der Zwischenablage zu speichern und anschließend abermals einer Dialogbox zu übergeben,
damit diese dann die Werte einer Variablen übergibt und somit an den Befehl mget weiterleitet!?
Somit geschehen in den Zeilen 97-100: http://nopaste.info/fb8c626405.html

Ach ja, bevor ich es vergesse:
Ich glaube nicht das sowas sich jemand zum testen und für Verbesserungen freiwillig auf seinen Rechner läd.
Gerüchten zufolge soll es ja im kleinen Städtchen Redmond (US-Bundesstaat Washington) eine Firma geben,
die sich seit Jahrzehnten vehement weigert, auch nur eine Zeile Programmcode zu veröffentlichen ....
Vielleicht gibt es da ja Parallelen... :lol: In diesem Fall sind wir jedoch gerne bereit, dafür tief ins Portemonnaie zu greifen! :p

Für heute: Thema gelöst.
 
Oben