Bash 想在多个服务器中查找sudo su的状态吗
我有一个bash脚本,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-检查命令是否成功运行
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
脚本,第二行有注释。