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 root@remote.example.com 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