如何在脚本中输入密码和用户名
问题描述:
我编写了一个shell脚本,并将其设置为crontab,但有问题。当crontab运行我的脚本时,在脚本中运行scp命令并从不同的服务器获取一些信息,所以我必须在脚本中输入其他服务器的密码。如何在脚本中输入密码?如何在脚本中输入密码和用户名
我的脚本:
scp [email protected]:/Products/data/bridge/control.txt .
????? (have to automatically enter password)
b=$(more control.txt | wc -l)
if [$b = 1]; then
echo " OK "
fi
答
你可以使用expect
,例如:
my_password="123456"
expect -c "spawn scp [email protected]:/Products/data/bridge/control.txt .; expect \"password\" {send -- \"${my_password}\r\"; expect eof;};"
你可以用'sshpass'来完成这个 – mathB
'sshpass -p “密码” SCP用户名@主机: /Products/data/bridge/control.txt .'确切。 – PoVa
尝试sshpass。你的系统必须先连接到远程服务器,这样你的系统才有〜/ .ssh/known_hosts。但是不建议使用这种方法,因为您必须将密码保护到crontab或文件系统中。我会建议使用ssh-keygen来创建一个密钥,并将〜/ .ssh/id_rsa.pub放到远程的〜/ .ssh/authorized_keys中。那么你的系统在scp期间不需要提供密码。 – HZS