Vždy můžete nakonfigurovat ssh bez hesla, abyste mohli přenášet soubory pomocí sftp, aniž by byl uživatel požádán o heslo. Ale pokud není povoleno konfigurovat ssh bez hesla, existuje způsob, jak automatizovat přenosy souborů sftp. Toho lze dosáhnout pomocí ‘očekávat ‘ příkaz poskytovaný shellem tcl.
Aby nástroj očekávání fungoval, musíme nainstalovat balíček „expect“. K tomu použijte níže uvedený příkaz:
# yum install expect
Níže je uveden příklad skriptu, který automatizuje vzdálený přístup pomocí dávkového souboru.
#!/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} "
Tady,
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.
Zde je příklad, jak spustit skript, který spustí příkazy v testjob.bat na remote.example.com po přihlášení jako root s heslem 'password'
# bash ./test.sh [email protected] password testjob.bat
UNIX / Linux :Jaká je správná oprávnění adresářů /tmp a /var/tmp
Jak nastavit přihlášení SSH bez hesla v Linuxu