我有一个bash脚本,hostlist
文件和一个expect脚本:
下面是bash脚本,用于从hostlist
文件获取输入,并为多个服务器保持循环ssh。
for x in $(cat hostlist); do
./sudoscript.exp $x
done
下面是我想要调用并收集sudo su -
命令输出的expect cum bash脚本。我只需要在文件中将输出作为'0或非零值,以便成功运行/执行'sudo su - '
。我只需要模拟执行并检查命令是否成功运行,而不是通过sudo su -
实际将用户更改为admin。
#!/bin/bash
#!/usr/bin/expect
spawn ssh [lindex $argv 0]
expect "$"
send "sudo su -\r" exit ; echo $server:$? >> output
有人可以建议您完成上面的脚本。
答案 0 :(得分: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
命令将结果限制为没有密码以及ALL命令或su
本身可以完成的操作。 (注意,如果它位于alias中,则无法找到su
。)