Linux shell脚本中通过ssh的sudo中的多个命令
我的脚本如下Linux shell脚本中通过ssh的sudo中的多个命令,linux,shell,ssh,sudo,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。然后运行脚本 然
#!/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。然后运行脚本 然后以用户作为user1执行sudo,然后仅以sudo用户的身份运行命令cd random和./randomscrip(以xx版本yy为参数)。
但是sudo内部的命令不起作用。您的引用有点粗心。在第一级和第三级引用中使用双引号,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
不工作时,sudoScript中的命令将失败。sudoScript中的命令在ssh会话中运行,而不是在sudo模式下运行。@A.G.你说得对。似乎sudo-s并没有像手册页承诺的那样在shell中运行命令。我已经对它进行了编辑和测试,以确保它能正常工作。我知道现在已经晚了。谢谢