以root身份在脚本中间运行命令[重复]
Posted
技术标签:
【中文标题】以root身份在脚本中间运行命令[重复]【英文标题】:Run a command in the middle of a script as root [duplicate] 【发布时间】:2019-04-02 09:55:47 【问题描述】:我需要在 bash 的脚本中间以 root 身份执行一行,我有以下代码:
#!/bin/bash
...
EOF
if [[ $x = true ]] || [[ $y= "On" ]]; then
echo -e "0 8 * * * root " >> /etc/crontab
我需要 root 用户在 crontab 中写入的 echo,该用户有密码。 目前它不会写入,因为它是由 ubuntu 用户执行的。 谢谢。
【问题讨论】:
我不介意在脚本中输入密码 如何成为sudo
的用户NOPASS
使用sudo
或expect
。
【参考方案1】:
我建议这样做:
echo -e "0 8 * * * root " | sudo tee -a /etc/crontab
当您的脚本遇到sudo
的sudo
时,它会询问您的密码,或者,如果您最近已经为 sudo 提供了密码,它只会执行任务。 (当然,如果这个用户不需要输入sudo
的密码,它永远不会要求输入。)
使用tee -a
而不是shell重定向可以解决重定向由当前shell执行的事实,因此在命令中添加sudo
不会影响重定向(然后由于缺少权限而失败)。
【讨论】:
以上是关于以root身份在脚本中间运行命令[重复]的主要内容,如果未能解决你的问题,请参考以下文章
简化bash脚本,以sudo身份运行时从命令中提取第一个单词
无法以 root linux 用户身份运行 mysql 命令