美文网首页
任务调度系统 - 不用 Root 也可以多租户提交

任务调度系统 - 不用 Root 也可以多租户提交

作者: 六层楼那么高 | 来源:发表于2020-12-17 14:43 被阅读0次

    任务调度系统需要为多租户提交任务,最开始调度服务使用 root 账号启动,使用 root 权限 sudo -u 用户的方式执行用户的任务,后来 root 权限被收回,调度系统服务改为普通用户启动,使用 expect 免密登录的方式解决,代码如下:

    #!/bin/bash
    # 以某用户执行命令
    # 环境需求:安装 expect
    
    user=$1
    password=$2
    command=$3
    
    su_exec() {
        cmd=${@:3}
        expect -c "
            set timeout -1;
            spawn -noecho /bin/su - $1 -c \"$cmd\";
            expect {
                "*password:*" {send $2\r;}
            }
            expect eof
            catch wait result
            exit [lindex \$result 3]
            "
        exitCode=$?
        echo "exit code: $exitCode"
        exit $exitCode
    }
    
    if id -u $user > /dev/null 2>&1; then
        su_exec $user $password $command
    else
        echo "user: $user does not exist, exit 1"
        exit 1
    fi
    

    相关文章

      网友评论

          本文标题:任务调度系统 - 不用 Root 也可以多租户提交

          本文链接:https://www.haomeiwen.com/subject/hmrzgktx.html