如何在脚本中输入密码和用户名

问题描述:

我编写了一个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 
+1

你可以用'sshpass'来完成这个 – mathB

+0

'sshpass -p “密码” SCP用户名@主机: /Products/data/bridge/control.txt .'确切。 – PoVa

+0

尝试sshpass。你的系统必须先连接到远程服务器,这样你的系统才有〜/ .ssh/known_hosts。但是不建议使用这种方法,因为您必须将密码保护到crontab或文件系统中。我会建议使用ssh-keygen来创建一个密钥,并将〜/ .ssh/id_rsa.pub放到远程的〜/ .ssh/authorized_keys中。那么你的系统在scp期间不需要提供密码。 – HZS

你可以使用expect,例如:

my_password="123456" 
expect -c "spawn scp [email protected]:/Products/data/bridge/control.txt .; expect \"password\" {send -- \"${my_password}\r\"; expect eof;};"