使用 sudo 命令来脚本 SSH 服务器

使用 sudo 命令来脚本 SSH 服务器

我必须在多台服务器上执行以下步骤:

  1. 使用我的用户名登录
  2. 输入sudo su -
  3. 输入amCLI -l 32/1 | grep Firmware

所以我想把这一切都写在一个脚本中,我的想法是:

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo su-; amCLI -l 32/1 | grep Firmware"
done

或者

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo amCLI -l 32/1 | grep Firmware"
done

但两者都不起作用。

答案1

更好的解决方案是设置 sudo,以便您的用户/full/path/to/amCLI无需提供密码即可执行。

然后你就可以简单地

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
    ssh -n vneudeck@$hostname sudo /full/path/to/amCLI -l 32/1 | grep Firmware
done

答案2

也许如果你把 vneudeck@$hostname 放在双引号中,它会有所帮助。而且 su 和 - 之间没有空格,我希望这有帮助

答案3

第一个不起作用:

sudo su -; amCLI -l 32/1 | grep Firmware

这将执行sudo su -,并且当它返回时(即当您以 root 身份处理完命令并退出时)它将执行 amCLI。(另请注意,sudo suis的替代方案sudo -s,但sudo su -我认为它能做的更多。)

第二个版本可能在某些条件下有效:sudo不应要求输入密码,并且amCLI应在 PATH 中(不是 root 的路径,该路径可能是在您键入时设置的sudo su -,而是您的路径,因为 sudo 使用您的路径)。尝试指定 的完整路径amCLI,例如/usr/local/sbin/amCLI或任何其他路径。

相关内容