2016-02-25 133 views
0

在我的脚本: 1.我已经通过用户名和密码做ssh来一台机器 2.比我所要做的苏 - 用户,它会提示密码 比我必须运行我的命令,即ls。sshpass和SU和命令都聚集在一个班轮查询

此前,没有第二步,我很高兴能够使用sshpass &通过我的脚本在单线命令中激发我的查询。像这样的东西。 sshpass -p pass user @ host“命令或ls”

但是现在我在ssh之后执行了一个额外的步骤。所以有人可以帮助我理解,我怎么能一起使用所有3,即sshpass,su和命令在一行查询。

感谢

回答

0

假设你只希望改变用户对于一个命令,你需要“-c”标志。

su - user -c "[command]" 

嵌套引号会变得有点复杂,但在这种情况下,您只需要转义内部引号。

su - user -c "sshpass -p pass [email protected] \"command or ls\"" 
+0

我会解释我是如何手动完成的。我不确定您的解决方案是否工作。 cmd1:ssh主机名-l用户 它提示我输入密码。我输入它。 主机名> su - 用户 它再次提示输入密码。 然后我在这里运行我的命令,像ls。 看起来像你第一次做su然后sshpass,并且你的cmd没有地方输入su密码。 –

+0

@TajinderSingh - 为什么用户需要自己找?记住'ssh -l用户主机'以用户'user'登录。 – alvits

+0

不对自己。 我运行的命令是 1. sshpass -p abc123 ssh alpha @ tyco @ company.com 2. su - beta和输入此用户的密码beta ***** 3.比我运行我的实际命令。例如猫log.txt 我首先必须做使用alpha的ssh,而不是必须对用户beta执行su操作,而不得不将命令作为beta运行。是否可以在一个班轮中? 感谢您的时间:) –