Bash脚本需要sudo密码

Thi*_*man 36 bash sudo

我正在创建一个Bash安装程序脚本,它为OSX和Linux编译和安装一些库.因为我的脚本中的一些命令("make install","apt-get install","port install"等)需要sudo,我需要用户提供密码.

目前,只要第一个sudo命令即将执行,就会要求用户输入密码,但由于这通常是在编译阶段之后,因此在启动脚本和输入密码之间总会有一段时间.

我想在脚本的开头放入密码输入+检查.另外,我很好奇这是否真的是一种安装系统库的好方法.

或者我可以在不需要sudo的本地沙箱位置安装库,但是我必须告诉apt-get和macports安装他们的库以外的默认值/ usr/local /和/ opt/local ,我不知道该怎么做,也不知道这是一个聪明的想法.

Aar*_*lla 67

要获取密码,只需放在sudo echo "Thanks."脚本的开头即可.

但我更喜欢这个解决方案:

if [[ $UID != 0 ]]; then
    echo "Please run this script with sudo:"
    echo "sudo $0 $*"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

  • 我在Solaris上使用$ UID时遇到了麻烦 - 在使用sudo运行脚本时,var是空白的.所以我不得不检查`id -u`. (4认同)

Tra*_*s R 5

对于那些不想提升整个脚本的人(通过在需要的脚本中仅使用sudo来限制风险),接受的答案的第一部分sudo echo "Thanks"有效但不会通过退出脚本来响应sudo密码失败.要实现这一点,包含sudo命令并希望在使用之前确保sudo访问的脚本可以从中开始

if [[ ! $(sudo echo 0) ]]; then exit; fi
Run Code Online (Sandbox Code Playgroud)

需要注意的是,您依赖于sudoers超时的存在,该超时将持续脚本的持续时间以抑制其余提示.