FTP-Shell-Script mkdir Problem
Ich bin mit der Bash FTP-Befehl von ftp-Dateien, aber ich habe ein problem, wo ich versuche, ein Verzeichnis zu erstellen, der mehr als 2 Ordner tief. Es funktioniert, wenn ich zwei Ordner tief, aber wenn ich gehen, um drei Ordner tiefer, dann schlägt es fehl. Zum Beispiel:
mkdir foo/bar - this works
mkdir foo/bar/baz - this fails
Habe ich auch so probiert:
mkdir -p foo/bar/baz - which didn't work, it ended up creating a '-p' directory
Dem shell-Skript, das ich versuche zu laufen, ist eigentlich Recht einfach, aber wie Sie sehen können die Verzeichnis-Struktur ist die 3 Ordner tief und es fehlschlägt, erstellen die benötigten Ordner:
#!/bin/bash
DIRECTORY="foo/bar/baz"
FILE="test.pdf"
HOST="testserver"
USER="test"
PASS="test"
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASS
mkdir $DIRECTORY
cd $DIRECTORY
binary
put $FILE
quit
END_SCRIPT
- Bash hat keine
ftp
Befehl -ftp
ist ein externes Dienstprogramm, und es ist sehr unsicher. Verwenden Sie etwas wiesftp
. - Haben Sie ein Beispiel, wie sftp verwendet werden könnte, statt ftp? Kann ich noch geben Sie den Benutzernamen und das Kennwort in der gleichen Weise?
- Nein, sollten Sie eine key-Datei. Übrigens
sftp
ist auch ein externer nutzen. Sehenman sftp
. - sind Sie sicher, ich kann Sie auf Verzeichnisse angeben, mehr als 3 Ordner tief mit diesem
sftp
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
mkdir unter ftp wird implementiert, indem der ftp-server nicht durch einen Aufruf von /bin/mkdir nicht solche Optionen wie -p,
was Sie tun sollten, ist
Wenn Sie immer noch Ihr original-Konstrukt ist, kann man es auch so:
-p
option, aber wenn Sie tun dies in einer kommerziellen Umgebung, können Sie wahrscheinlich nicht die Erlaubnis bekommen, Sie zu installieren, die Clients in Ihr system. Nicht zu vergessen die Zeit, die Sie verbringen auf der Suche nach es. .....for loop
ist dein Freund. viel Glück.for loop
...und nach und nach aufzubauen, das aktuelle Arbeitsverzeichnis, wie ich gehe.Versuchen lftp statt: