Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Bash 想在多个服务器中查找sudo su的状态吗_Bash_Ssh_Expect_Su_Sudoers - Fatal编程技术网

Bash 想在多个服务器中查找sudo su的状态吗

Bash 想在多个服务器中查找sudo su的状态吗,bash,ssh,expect,su,sudoers,Bash,Ssh,Expect,Su,Sudoers,我有一个bash脚本,hostlist文件和一个expect脚本: 下面是bash脚本,它从hostlist文件获取输入,并为多个服务器保持ssh循环 for x in $(cat hostlist); do ./sudoscript.exp $x done 下面是我想要tun并收集sudo su-命令输出的expect-cum-bash脚本。我只需要在文件中以“0或非零值”的形式获取输出,以便成功运行/执行“sudo su-”。我只需要模拟执行,并通过执行sudosu-检查命令是否成功运行

我有一个bash脚本,
hostlist
文件和一个expect脚本: 下面是bash脚本,它从
hostlist
文件获取输入,并为多个服务器保持ssh循环

for x in $(cat hostlist); do
./sudoscript.exp  $x
done
下面是我想要tun并收集
sudo su-
命令输出的expect-cum-bash脚本。我只需要在文件中以“0或非零值”的形式获取输出,以便成功运行/执行
“sudo su-”
。我只需要模拟执行,并通过执行
sudosu-
检查命令是否成功运行,而不实际将用户更改为admin

#!/bin/bash
#!/usr/bin/expect
spawn ssh [lindex $argv 0]
expect "$"
send "sudo su -\r" exit ; echo $server:$? >> output

有人能建议完成上面的脚本吗

你到底想做什么

也许你想看看是否有可能在没有密码的情况下成为root用户?如果是这种情况,请尝试:

for x in $(cat hostlist); do
  echo $x
  ssh $x sudo -l |egrep -w 'NOPASSWD:.*(ALL|/su)'
  echo
done
sudo-l
将列出您可以运行的内容。它需要您的密码,除非您有一个或多个不需要密码的命令(
ssh
在使用命令调用且没有
-t
标志时不会以交互方式运行。这是有意的,因为我们不希望这样)


egrep
命令将结果限制为无需密码即可完成的操作以及所有命令或其他
su
本身。(注意,如果在an中,这将找不到
su

您可以将要远程执行的命令作为最后一个参数传递给
ssh
。而且,这不是一个
expect
脚本。这可能是一个无效的
bash
脚本,第二行有注释。