shell脚本使用sudo su - team并在此sudo访问下执行rest命令

时间:2014-06-04 12:58:57

标签: linux shell sqlplus sudo su

#!/bin/bash
sudo su - team  //// this will change user to team
<somecommnand>

这里我有一些像sqlplus这样的命令只能在这个特权下运行。

但是,这个脚本首先要求输入密码,然后我给密码,但它不会运行其他命令,如。

如何编写使用sudo su的脚本并在其下面的脚本中运行所有命令。

2 个答案:

答案 0 :(得分:0)

您有几种选择。

  1. 您可以将sudo命令移到脚本之外,让人们这样称呼它:

    sudo -u team /path/to/your/script
    
  2. 您可以将sudo命令放在一个脚本中,并将要在另一个脚本中使用提升的权限运行的实际命令。也就是说,人们运行your_script,看起来像:

    #!/bin/sh
    sudo -u team /path/to/your_script.real
    

    your_script.real包含您希望以提升的权限运行的命令。

  3. 如果你真的想要同一个脚本中的所有内容并且你不介意有点过于聪明,你可以让脚本检查使用sudo重新执行它自己:

    #!/bin/sh
    
    TEAM_UID=500 # replace with correct uid
    
    if [ "$UID" != $TEAM_UID ]; then
        exec sudo -u team $0
    fi
    
  4. 您还可以从 stdin 向shell提供命令,如下所示:

    #!/bin/sh
    sudo su - team <<'EOF'
    echo my uid is $UID
    EOF
    

答案 1 :(得分:-2)

您可以尝试将所有命令放在同一行,并将其与&#39;;&#39;分开。

例如。 &#39; sudo su; somecommand;另一个命令&#39;

也可以将该脚本作为目标用户运行。