Gibt es eine Möglichkeit, ein Skript für die FTP-Anmeldung zu schreiben, damit ich nicht immer wieder Dinge eingeben muss?

6

Ich arbeite seit kurzem intensiv mit einem Remote-System über eine FTP-Verbindung, da die Sitzungszeit so kurz ist, dass ich mich nach Abschluss meiner Arbeit auf meinem lokalen Computer häufig erneut anmelden muss. Daher muss ich einen benutzerdefinierten Befehl erstellen können. Shell-Skript, um sich mit nur einem Wort beim FTP-Server anzumelden, aber die Frage ist, wie es geht.

z.B

~$ ftp domainname.com
 ...
 Name (domainname.com): MyName
 ...
 Password: xxxx
 ...
 ftp>
Rn2dy
quelle
1
Nur eine Frage, warum FTP und nicht SSH? ssh ist viel sicherer und das Anmelden wie dieses wäre nur ein einfacher Bash-Alias
n0pe
1
Mit SSH können Sie auch Authentifizierungsschlüssel verwenden, mit denen Sie sich automatisch anmelden, ohne Ihren Benutzernamen / Pass in einer .bashrcDatei als Klartext speichern zu müssen .
sbtkd85
Nun, ich nehme an, das Remote-System unterstützt ssh, aber das tut es nicht.
Rn2dy

Antworten:

9

Normalerweise unterstützen ftpBefehlszeilenclients die Konfigurationsdatei, ~/.netrcin der Sie Anmeldeinformationen für Remote-Systeme konfigurieren können, z.

machine legacy.system.example.org
login juser
password keins

Wenn Sie ftp legacy.system.example.orgSie dann müssen nicht mehr mit diesen Daten erneut eingeben.

Wenn Sie mehr Automatisierung benötigen, können Sie Skripte ftpüber Piping-Befehle erstellen, z.

$ cat pushit.sh
# complex logic to set
# EXAMPLE_FILE=
ftp <<EOF
prompt
mput $EXAMPLE_FILE
quit
EOF

Sicher, wenn das System nicht unterstützt ssh, unterstützt es wahrscheinlich auch keine FPS - aber Sie können es versuchen (z. B. über FTP-SSL ), wenn Sie Ihre Verbindung sichern müssen.

LFTP

Eine Alternative zu einem der einfachen ftpBefehle ist die Verwendung lftp, da es verschiedene Funktionen für die automatische Anmeldung und Befehlsausführung bietet.

Beispiel:

$ lftp -e 'source ~/login.lftp'
$ cat login.lftp
open sftp://juser:geheim@backup.example.net
cd /path/to/favorite/dir

Beachten Sie, dass dieses Beispiel die automatische Kennwortauthentifizierung für einen SFTP- Server zeigt, der vom Standard- OpenSSH- SFTP- Client nicht unterstützt wird .

Die Option -eweist lftp an, die Befehle beim Start auszuführen und interaktiv zu bleiben.

Natürlich liefert ein solches lftp-Skript auch andere Skripte und trennt sich automatisch vom Server.

Im Gegensatz dazu wird with -coder -flftp direkt beendet, nachdem die als Argument angegebenen Befehle ausgeführt oder aus der angegebenen Datei gelesen wurden.

maxschlepzig
quelle
2
LFTPist viel besser.
Ekeyme Mo
3

Wenn Sie das Ganze ausschreiben möchten:

#!/bin/sh
HOST='ftp.example.com'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0

Siehe auch diese Webseite .

Bruce Ediger
quelle
2

Wenn Sie sich automatisch anmelden möchten, können Sie eine .netrcDatei verwenden. Ich würde dies NICHT empfehlen, da Sie Ihren Benutzernamen und Ihr Passwort im Klartext speichern müssten, was unsicher ist. Wenn Sie ssh verwenden können, würde ich empfehlen, dies mit Authentifizierungsschlüsseln zu verwenden, um Sie automatisch anzumelden.

Wenn Sie keine sichere Methode wie ssh mit Schlüsseln verwenden können, können Sie Ihre FTP-Informationen anhand dieser Anleitung konfigurieren .

sbtkd85
quelle