【问题标题】:Executing bash commands automatically under sudo is not working在 sudo 下自动执行 bash 命令不起作用
【发布时间】:2023-04-10 17:28:01
【问题描述】:

我需要一个脚本来执行 sudo 命令而无需输入密码。 在以下脚本中,我有一个奇怪的 bash stdin 行为:

username@username-laptop:~$ sudo -Si | echo "password" 
password
root@username-laptop:~# exit
username@username-laptop:~$ sudo -Si | echo "password"
password
[sudo] password for rootname:

(密码是我机器上的root密码)

为什么第一次没有请求密码,而第二次请求密码(并且总是在那之后)?另外我不明白stdin 在 bash 中是如何工作的,我的代码哪里出错了?

我知道直接将root密码输入命令是一个非常糟糕的主意,但我需要它才能正确执行。

【问题讨论】:

    标签: linux bash sudo


    【解决方案1】:

    也许你应该试试:

    echo "Password" | sudo -Si
    

    代替:

    sudo -Si | echo "Password"
    

    第一个命令的输出(“|”之前)用作第二个命令的输入。

    你应该知道第一个命令不能做任何屏幕输出,而第二个命令不能接收任何键盘输入,除非你做一些编程技巧......

    【讨论】:

    • 我的脚本有以下输出:username@username-laptop:~$ echo "password" | sudo -Si[sudo] password for username: stdin: is not a tty
    • 嗯。在这种情况下,您将不得不使用伪 TTY。这需要 C 编程或现有的脚本工具(我知道有一个,但我不知道名称)。
    • 工具名为“expect”
    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2015-09-03
    相关资源
    最近更新 更多