sudo su后如何执行命令

问题描述 投票:0回答:3

我需要在 sudo su 之后执行“monit restart haproxy”命令。

这是我的脚本.sh

sudo su
monit restart haproxy.

在这里,如果我执行 script.sh 文件,那么它会挂起,并且不会执行 monit restart haproxy 命令。

有什么想法吗?

shell sh monit cf-bosh
3个回答
0
投票

sudo
命令要求您输入密码,这就是它会挂起的原因,您可以使用管道将密码传递给命令,如下所示:

echo <password> | sudo su
monit restart haproxy.

0
投票

这里有一些关于 sudo su 的信息。您需要输入 sudo 或 su 命令的密码,这是我发布的链接中的一些引用,可能是您问题的根源:

sudo - sudo 旨在以 root 权限运行单个命令。但与 su 不同的是,它会提示您输入当前用户的密码。该用户必须位于 sudoers 文件中(或 sudoers 文件中的组)。 默认情况下,Ubuntu 会“记住”您的密码 15 分钟,这样您就不必每次都输入密码。


0
投票
sudo su -c - root "monit restart haproxy"

验证您的 shell 是否具有通过 su 发送命令的 -c 选项。在 RHEL9 上测试了该命令。您的 shell 中也应该提供此选项或类似的选项。

确保您有 sudoer 访问权限来运行 su。

您还可以使用适当的 sudo 定义在没有密码的情况下运行 sudo

user ALL=(ALL) NOPASSWD: ALL

或根据您的环境而定。

注意:谨慎使用提升的权限。

© www.soinside.com 2019 - 2024. All rights reserved.