linux – 在安装脚本的持续时间内暂时增加sudo的超时
发布时间:2020-05-23 18:40:48 所属栏目:Linux 来源:互联网
导读:我正在尝试编写一个安装了一堆软件的脚本,我不想以root身份运行所有内容,所以我希望能够提示输入密码,然后再进行安装,使用sudo或su在我需要时获得特权. 我正在做一个sudo -v来提示在脚本开头输入密码,然后通常只是稍后使用sudo.这很有效,直到我接到一个接管超
|
我正在尝试编写一个安装了一堆软件的脚本,我不想以root身份运行所有内容,所以我希望能够提示输入密码,然后再进行安装,使用sudo或su在我需要时获得特权. 我正在做一个sudo -v来提示在脚本开头输入密码,然后通常只是稍后使用sudo.这很有效,直到我接到一个接管超时的安装. 我宁愿不必永久地增加超时.有没有办法只增加当前会话的sudo超时? 解决方法你可以设置一个在后台运行的循环来定期执行“sudo -v”,当然是在你的脚本终止时让循环干净地终止.因此,两个过程之间必须存在某种类型的通信; tmp文件适用于此,并且在脚本运行后也可以轻松清理它们. (无论如何,安装脚本通常会这样做.)例如(删除’echo’语句来使用它;这些只显示它“工作”): #!/bin/bash
log=running_setup.txt
sudo_stat=sudo_status.txt
echo "========= running script $$========"
echo $$>> $sudo_stat
trap 'rm -f $sudo_stat >/dev/null 2>&1' 0
trap "exit 2" 1 2 3 15
sudo_me() {
while [ -f $sudo_stat ]; do
echo "checking $$...$(date)"
sudo -v
sleep 5
done &
}
echo "=setting up sudo heartbeat="
sudo -v
sudo_me
echo "=running setup=" | tee $log
while [ -f $log ]
do
echo "running setup $$...$(date) ===" | tee -a $log
sleep 2
done
# finish sudo loop
rm $sudo_stat
然后你会看到…(注意:pid被放入tmp文件,只是为了你可以很容易地杀死它.但是没有必要): $./do_it.sh ========= running script 6776 ======== =setting up sudo heartbeat= [sudo] password for user: =running setup= checking 6776 ...Wed May 4 16:31:47 PDT 2011 running setup 6776 ...Wed May 4 16:31:48 PDT 2011 === running setup 6776 ...Wed May 4 16:31:50 PDT 2011 === running setup 6776 ...Wed May 4 16:31:52 PDT 2011 === checking 6776 ...Wed May 4 16:31:53 PDT 2011 running setup 6776 ...Wed May 4 16:31:54 PDT 2011 === <ctrl-c> (cleans up files,then exits) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux-kernel – 是否可以从Linux(ioctl)中的内核空间调用用
- linux – 如何跟踪EC2实例或弹性IP上的公共带宽使用情况?
- linux – 本地SVN存储库到git
- linux – 将文件系统格式从xfs更改为ext4而不会丢失数据
- 在Linux中关闭历史记录[已关闭]
- 为什么要多次通过构建Linux From Scratch(LFS)?
- linux – 现代文件系统中数百万个文件的性能影响是什么?
- linux – OSX sed:如何在`s`操作的第二个字段中使用转义字
- MPD:使用Linux bash脚本接收实际的mpd-status
- linux – ZFS数据集在重新启动时消失
