在shell脚本中通过ssh在sudo中的多个命令

时间:2014-08-26 09:40:56

标签: linux shell ssh sudo

我的脚本如下。

#!/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 然后使用user作为user1执行sudo,然后运行命令cd random和./randomscrip(以xx-Version-yy作为参数)仅作为sudo用户。 但是sudo中的命令不起作用。

1 个答案:

答案 0 :(得分:2)

你的报价有点粗心。你在引用的第一和第三级使用双引号,而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引用,否则它仍然会出错。

最后,在分配到=时删除version周围的空格。