【问题标题】:Multiple commands in sudo over ssh in shell scriptshell脚本中sudo over ssh中的多个命令
【发布时间】:2014-08-26 09:40:56
【问题描述】:

我的脚本如下。

#!/bin/bash

version = 1.1

echo "Enter username"

read UserName

ssh -t $UserName@server bash -c " '

./runSomeScript

echo "Entering Sudo"

sudo -s -u user1 -c "cd random; ./randomscrip xx-$version-yy"

'"

但这不起作用。

基本上我想对一个帐户进行 ssh。然后运行SomeScript 然后以 user1 的身份执行 sudo,然后仅以 sudo 用户的身份运行命令 cd random 和 ./randomscrip (以 xx-Version-yy 作为参数)。 但是 sudo 里面的命令不起作用。

【问题讨论】:

    标签: linux shell ssh sudo


    【解决方案1】:

    你的引用有点粗心。您在第一级和第三级引用中使用双引号,并且 shell 无法区分彼此。改为这样做:

    sudoScript="cd random; ./randomscrip xx-${version}-yy"
    sshScript='
      ./runSomeScript
      echo "Entering Sudo"
      sudo -s -u user1 bash -c '"'${sudoScript}'"'
    '
    ssh -t ${UserName}@server "${sshScript}"
    

    但请注意,如果您嵌入任何单引号,除非您添加一层 shell-quoting,否则它仍然会出错。

    最后,当您分配给version 时,删除= 周围的空格。

    【讨论】:

    • 不工作,sudoScript 中的命令失败。 sudoScript 中的命令在 ssh 会话中运行,而不是在 sudo 模式下运行。
    • @A.G.你是对的。似乎 sudo -s 并没有像手册页所承诺的那样真正在 shell 中运行命令。我已经对其进行了编辑和测试,以确保它可以正常工作。
    • 我知道这已经晚了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2018-06-07
    • 2011-04-25
    • 1970-01-01
    • 2013-03-01
    相关资源
    最近更新 更多