Linux 在bash脚本中调用SSH Sudo命令
我试图在循环执行命令时运行该命令 一系列服务器地址Linux 在bash脚本中调用SSH Sudo命令,linux,bash,ssh,server,sudo,Linux,Bash,Ssh,Server,Sudo,我试图在循环执行命令时运行该命令 一系列服务器地址 while read server do ssh -t $sever "sudo md5sum $fileName >> hashes" done < serverNamesFile 读取服务器时 做 ssh-t$sever“sudo md5sum$fileName>>散列” 完成
while read server
do
ssh -t $sever "sudo md5sum $fileName >> hashes"
done < serverNamesFile
读取服务器时
做
ssh-t$sever“sudo md5sum$fileName>>散列”
完成<服务器名称文件
在bash中的脚本中,但我不断遇到此错误
sudo:对不起,你必须有一个tty才能运行sudo
但是,如果我在命令行中运行相同的命令行,它就可以很好地工作
有人能告诉我为什么会这样吗?你可能有
默认要求
在/etc/sudoers文件中
正如选项名称所示,这将导致sudo需要一个tty,我解决了我的问题。显然,在脚本中循环通过一系列服务器会导致SSH出现“TTY”错误 更好的做法是创建一个脚本,该脚本接收您想要SSH的服务器的地址,然后以这种方式传递命令。您仍然可以通过每次调用SSH循环执行一系列文件或命令,并使用以下命令:
while read stuff
do
ssh -qtt $severName " command"
done < $fileStuff
读东西的时候
做
ssh-qtt$severName“命令”
完成<$filestaff
您是从命令行运行脚本吗?是的,我是通过命令行运行脚本。是否有任何i/O重定向正在进行?请您的问题显示整个脚本或至少相关部分。了解您如何运行ssh将非常有帮助——不管它是在循环中,还是涉及重定向或管道。