【问题标题】:How to enter pass and username inside script如何在脚本中输入密码和用户名
【发布时间】: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文件从服务器发送到其他服务器。

标签: linux bash shell


【解决方案1】:

您可以使用expect,例如:

my_password="123456"
expect -c "spawn scp username@host:/Products/data/bridge/control.txt .; expect \"password\" {send -- \"${my_password}\r\"; expect eof;};"

【讨论】:

    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多