Sie können ssh immer ohne Passwort konfigurieren, um Dateien mit sftp zu übertragen, ohne dass der Benutzer nach einem Passwort gefragt wird. Aber wenn es nicht erlaubt ist, ein passwortloses ssh zu konfigurieren, gibt es eine Möglichkeit, sftp-Dateiübertragungen zu automatisieren. Dies kann durch die Verwendung von „expect“ erreicht werden ‘ Befehl, der von der Tcl-Shell bereitgestellt wird.
Damit das Expect-Dienstprogramm funktioniert, müssen wir das Paket „expect“ installieren. Verwenden Sie dazu den folgenden Befehl:
# yum install expect
Nachfolgend finden Sie ein Beispielskript, das den Fernzugriff mit einer Batchdatei automatisiert.
#!/bin/bash if (( $# < 3 )); then echo "Usage: $0 [remote addr] [password] [batch file]" echo echo -e "tremote addr : [loginid]:[host addr]n" exit fi REMOTE=$1 PASS=$2 BATCH=$3 expect -c " spawn sftp -o "batchmode no" -b "$BATCH" $REMOTE expect -nocase "password:" {send "$PASSr"; interact} "
Hier,
spawn - to initiate the sftp process expect - it expects a particular string ( here it is "password:" prompt ) send - sends the password when the expect utility gets the required prompt.
Hier ist ein Beispiel, wie man das Skript ausführt, das die Befehle in testjob.bat auf remote.example.com ausführt, nachdem man sich als root mit dem Passwort „password“
angemeldet hat# bash ./test.sh [email protected] password testjob.bat