在 bash 脚本中调用 SSH Sudo 命令

calling SSH Sudo Commands in a bash script

我正在尝试 运行 循环执行命令 一系列服务器地址。

while read server
do
      ssh -t $sever "sudo md5sum $fileName >> hashes"
done < serverNamesFile

在 bash 的脚本中,但我一直收到此错误

sudo: sorry, you must have a tty to run sudo

如果我 运行 在命令行中使用同一行命令,它就可以正常工作。

谁能告诉我为什么总是这样?

你可能有

Defaults requiretty

在您的 /etc/sudoers 文件中。

如选项名称所示,这将导致 sudo 需要 tty

我解决了我的问题。显然在脚本中循环遍历一系列服务器会导致 SSH "TTY" 错误。

更好的做法是创建一个脚本,该脚本接收要通过 SSH 连接的服务器的地址,然后以这种方式传递命令。您仍然可以通过每次调用 SSH 并使用此命令来遍历一系列文件或命令:

while read stuff
do
ssh -qtt $severName " command"
done < $fileStuff