【问题标题】:Shell script to remove files from multiple host用于从多个主机中删除文件的 Shell 脚本
【发布时间】:2018-03-13 20:25:53
【问题描述】:

我有一个脚本,它通过 ssh 进入主机列表并删除文件。我面临的问题是,当删除发生时,控制台会要求输入密码。

为了解决这个问题,我知道使用下面的代码来硬编码密码

time cat ../hosts.txt | xargs -P 16 -I foo ssh foo ' echo "MYPASSWORD" | sudo -kS rm -rf /tmp/randomfile*'

有什么方法可以避免硬编码密码?

【问题讨论】:

  • 你可以设置一个 ssh 密钥
  • 另一种选择是Ansiblesshpass的组合
  • 这是系统配置问题。您应该配置远程主机以允许您以不需要使用sudo 删除文件的用户身份登录。这可以像登录 root 一样简单,或者更安全一些,例如创建一个可以删除这些文件但实际上不能做任何其他事情的特殊用户。
  • (或者更确切地说,配置sudo,以便特殊用户无需输入密码即可执行此特定命令。)

标签: linux shell ssh sh xargs


【解决方案1】:

您可以设置ssh-agent

我建议使用 ssh-key,您可以查看这篇描述如何创建它并将其添加到您的 ssh-agent 的文章:

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

【讨论】:

  • ssh-agent 不会帮助 sudo 请求密码。
猜你喜欢
  • 2012-06-27
  • 2017-01-25
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
相关资源
最近更新 更多