以root身份在脚本中间运行命令

时间:2018-10-29 12:54:54

标签: linux bash shell

我需要在bash脚本的中间以root身份执行一行,我有以下代码:

#!/bin/bash
...
EOF

if [[ $x = true ]] || [[ $y= "On" ]]; then
echo -e "0 8    * * *   root " >> /etc/crontab

我需要具有密码的root用户在crontab中编写的回显。 当前它不写,因为它是由ubuntu用户执行的。 谢谢。

1 个答案:

答案 0 :(得分:3)

我建议这样做:

import { Subject } from 'rxjs';

class CustomEventEmitter extends Subject<any>{
 constructor() {
    super();
 }
 emit(value: any) {
    super.next(value);
 }
}

export class PubSubService {
 Stream: CustomEventEmitter;
 constructor() {
    this.Stream = new CustomEventEmitter;
 }
}

当脚本遇到echo -e "0 8 * * * root " | sudo tee -a /etc/crontab 的{​​{1}}时,它将询问您的密码,或者,如果您刚刚刚为sudo给出了密码,它将仅执行任务。 (当然,如果该用户不需要为sudo输入密码,则永远不会要求输入密码。)

使用tee代替Shell重定向可以解决以下问题:当前shell会执行重定向,因此在命令中添加sudo不会影响重定向(然后由于丢失而失败)权限)。