0

我有一个 bash 脚本、hostlist文件和一个期望脚本:下面是 bash 脚本,用于从hostlist文件中获取输入并为多个服务器保持循环 ssh。

for x in $(cat hostlist); do
./sudoscript.exp  $x
done

下面是我想要调整和收集sudo su -命令输出的期望兼 bash 脚本。我只需要在文件中将输出作为 '0 或非零值即可成功运行/执行'sudo su - '. 我只需要模拟执行并检查命令是否成功运行,而无需通过实际将用户更改为管理员sudo su -

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

有人可以建议完成上面的脚本。

4

1 回答 1

0

你到底想做什么?

也许您正在尝试查看是否可以在没有密码的情况下成为 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本身。(注意,这不会找到su它是否在别名中。)

于 2016-02-23T01:02:01.607 回答