Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在bash脚本中调用SSH Sudo命令_Linux_Bash_Ssh_Server_Sudo - Fatal编程技术网

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将非常有帮助——不管它是在循环中,还是涉及重定向或管道。