我需要在 sudo su 之后执行“monit restart haproxy”命令。
这是我的脚本.sh
sudo su
monit restart haproxy.
在这里,如果我执行 script.sh 文件,那么它会挂起,并且不会执行 monit restart haproxy 命令。
有什么想法吗?
sudo
命令要求您输入密码,这就是它会挂起的原因,您可以使用管道将密码传递给命令,如下所示:
echo <password> | sudo su
monit restart haproxy.
这里有一些关于 sudo su 的信息。您需要输入 sudo 或 su 命令的密码,这是我发布的链接中的一些引用,可能是您问题的根源:
sudo - sudo 旨在以 root 权限运行单个命令。但与 su 不同的是,它会提示您输入当前用户的密码。该用户必须位于 sudoers 文件中(或 sudoers 文件中的组)。 默认情况下,Ubuntu 会“记住”您的密码 15 分钟,这样您就不必每次都输入密码。
sudo su -c - root "monit restart haproxy"
验证您的 shell 是否具有通过 su 发送命令的 -c 选项。在 RHEL9 上测试了该命令。您的 shell 中也应该提供此选项或类似的选项。
确保您有 sudoer 访问权限来运行 su。
您还可以使用适当的 sudo 定义在没有密码的情况下运行 sudo
user ALL=(ALL) NOPASSWD: ALL
或根据您的环境而定。
注意:谨慎使用提升的权限。