【发布时间】:2018-03-27 21:18:37
【问题描述】:
我写了一个 shell 脚本,我会将它设置到 crontab 中,但我有一个问题。当 crontab 运行我的脚本时,在脚本中运行 scp 命令并从不同的服务器获取一些信息,所以我必须在我的脚本中输入其他服务器的密码。如何在脚本中输入密码?
我的脚本:
scp username@host:/Products/data/bridge/control.txt .
????? ( have to automatically enter password)
b=$(more control.txt | wc -l)
if [$b = 1]; then
echo " OK "
fi
【问题讨论】:
-
你可以使用
sshpass来完成这个 -
sshpass -p "password" scp username@host:/Products/data/bridge/control.txt .准确。 -
试试 sshpass。并且您的系统必须先连接到远程服务器,因此您的系统中有 ~/.ssh/known_hosts 。但是,不建议使用此方法,因为您必须在 crontab 或文件系统中保留未受保护的密码。我建议使用 ssh-keygen 制作密钥,并将 ~/.ssh/id_rsa.pub 放到远程 ~/.ssh/authorized_keys 。那么你的系统将不需要在 scp 期间提供密码。
-
实际上这不是我们的服务器,我们可以通过有限的授权连接这台服务器,因此 sshpass 命令不起作用并且他们不安装此 cmd。我还尝试了 ssh 密钥方法,但它不起作用我认为防火墙阻止使用密钥进行 ssh。我只想将一个txt文件从服务器发送到其他服务器。
-
这样做 - stackoverflow.com/questions/1346509/… 帮助?