如何将密码传递给 sudo 命令?

eps*_*on8 3 shell

在 OSX 上我做

sudo route delete default
sudo route add default 192.168.178.1
Run Code Online (Sandbox Code Playgroud)

更改我的默认网关。

在使用这些运行 sh 文件时,我每次都被要求输入密码。我运行的

sh changegw.sh.

我如何事先传递我的密码?

Luc*_*man 9

对于 sudo,有一个 -S 选项用于接受来自标准输入的密码。这是 man 条目:

-S          The -S (stdin) option causes sudo to read the password from
            the standard input instead of the terminal device.
Run Code Online (Sandbox Code Playgroud)

这将允许您运行如下命令:

echo myPassword | sudo -S ls /tmp
Run Code Online (Sandbox Code Playgroud)

  • 缺点是您的密码现在在 shell 历史记录中。 (2认同)