Ich möchte einen Aufruf von ftp in einem Shell-Skript automatisieren. Wenn ich tippe
$ftp somehost.domain.com
Ich werde aufgefordert, einen Benutzernamen und ein Passwort einzugeben. Ich möchte diesen Benutzernamen und dieses Passwort als Teil des Aufrufs an ftp geben. Die Manpage für FTP sagt, dass ich an der FTP-Eingabeaufforderung einen Benutzerbefehl ausgeben kann - aber ich möchte mich auf einmal bei FTP anmelden. Ist das möglich? Ich sehe nichts in den Flags für FTP. Ich sehe, dass die Option -s mir die Möglichkeit gibt, einige FTP-Befehle anzugeben, sobald ich die FTP-Eingabeaufforderung habe - aber ich muss den Benutzernamen angeben, um zur Eingabeaufforderung zu gelangen ...
expect
(eine Art tcl / tk-Erweiterung) ist ein Programm, das für diese Art von Dingen ideal ist - dh. Warten Sie auf eine Eingabeaufforderung. gib eine Antwort ... warte auf eine Antwort; Geben Sie eine neue Antwort ...expect
warten Sie auf "ogin:" und senden Sie Ihren Benutzernamen, dann warten Sie auf "assword:" und senden Sie Ihr Passwort.Antworten:
Verwenden Sie eine
.netrc
Datei in Ihrem Home-Verzeichnis.Der Inhalt ist:
Wenn Sie dies programmgesteuert tun, schreiben Sie das,
.netrc
bevor Sie eine Verbindung herstellen, und löschen Sie es, wenn Sie fertig sind.quelle
ftp
oder wird sie auch von anderen Programmen gelesen?netrc(5)
Manpage sagt, dass es "fürftp(1)
" ist, aber ich bin nicht sicher, ob diesftp
das einzige ist, das es verwenden wird.locate '.netrc'
Sie können ein AC-Shell-Skript auch mit einem Here-Dokument schreiben, das ungefähr so aussehen würde:
quelle
Sie können je nach Ihren Anforderungen auch
wput
oderwget
als Alternative in Betracht ziehen .Ich habe es in
wget
letzter Zeit nicht verwendet, aber ich habe es verwendet,wput
weil ich keine Dateien erstellen oder ändern wollte, wie in einigen früheren Antworten vorgeschlagen.Für
wput
die Syntax ist:quelle