[英]Extending SUDO timestamp in a BASH script
有一个BASH脚本可能需要5分钟以上的时间来运行命令列表(多数为sudo)...还有什么选择?
有人说...
使用sudo -v
似乎是一个不错的选择,尽管在阅读了苹果的sudo(8)手册页之后 ,据说...
如果提供-v(验证)选项,则sudo将更新用户的时间戳,并在必要时提示用户输入密码。 这会将sudo超时再延长5分钟(或sudoers中设置的任何超时时间),但不会运行命令。
如果需要,我担心提示输入用户密码 。 它们在“必要时”是什么意思?
如果我在一个bash脚本中有sudo -v,可以说,它自上次使用sudo以来大约执行了4分钟(时间戳还剩1分钟)。 因此,再给我们5分钟的时间戳-对吗?
至于其他选项,有人提到使用循环命令来更新时间戳。
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
上面的代码可以工作吗?
但是,我确实回答了我自己的问题,但是找到了解决方案。
用您的密码替换userpassword :
echo "userpassword" | sudo -S -v
使用变量 :
echo "$var" | sudo -S -v
要么
如果超过5分钟,请使用while循环 :
while true; do sudo -v; sleep 300; kill -0 "$$" || exit; done 2>/dev/null &
使用以下内容:
sudo -nv
如果sudo权限仍可用于当前上下文,则此命令将不输出任何内容。 如果它们不可用,则命令将输出:
$ sudo -nv
sudo: a password is required
这样就不会问了,您可以围绕这些输出条件构建脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.