在Shell脚本中取消sudo提示

时间:2018-12-11 09:51:33

标签: linux bash shell

我不希望'sudo'在脚本运行时提示我输入密码。而且我也不想使用sudo -S输入sudo密码。 有什么办法可以跳过sudo行并运行脚本的下一行。 还是在提示sudo并进一步运行脚本时有任何方法打印“需要sudo访问权限”。

3 个答案:

答案 0 :(得分:2)

您可以测试当前用户是否是root用户,例如:

if [ "$(id -u)" != "0" ]; then
    echo "root access required"
    exit -1
fi

答案 1 :(得分:1)

如果您不想输入sudo密码,只需将当前用户添加到/ etc / sudoers(以root身份编辑此文件)。

找到一个块,从注释开始:

# Allow members of group sudo to execute any command

并在其中添加以下内容:

YourUserName ALL=(ALL) NOPASSWD: ALL

答案 2 :(得分:0)

出于记录目的,更好的方法是只复制脚本并将其编辑为非根版本。

也就是说,如果您创建一个函数来实现需要设置标志的sudo,则可以在运行时将其激活,但默认情况下会跳过它们。

$: cat tst
#! /bin/env bash

dosudo() {
   if (( DOSUDO ))
   then sudo "$@"
   else echo "Skipping: sudo $@"
   fi
}

echo before
dosudo ls -d /tmp
echo after

以默认模式运行它:

$: tst
before
Skipping: sudo ls -d /tmp
after

运行它为活动状态(我在这里按CTRL-C跳出提示)-

$ DOSUDO=1 tst
before
[sudo] password for weblogic:
after