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