【发布时间】:2015-06-16 17:39:56
【问题描述】:
我想在服务器登录时自动运行多个命令,例如 sudo bash、ssh server01、ls、cd /tmp 等。 我在 putty 中使用 SSH 下的远程命令选项。
我尝试了多个带有分隔符 && 的命令,但都不起作用。
【问题讨论】:
-
还有任何传递密码的解决方案吗?
标签: linux bash ssh putty server-administration
我想在服务器登录时自动运行多个命令,例如 sudo bash、ssh server01、ls、cd /tmp 等。 我在 putty 中使用 SSH 下的远程命令选项。
我尝试了多个带有分隔符 && 的命令,但都不起作用。
【问题讨论】:
标签: linux bash ssh putty server-administration
您的问题缺少一些信息。
你说你想运行sudo bash,然后是ssh server01。
sudo 会在您的远程服务器中提示输入密码吗?
假设 sudo 中没有密码,运行 bash 将打开另一个 shell 等待用户输入。命令ssh server01 在退出该 bash shell 之前不会运行。
如果您想运行 2 个命令,请先尝试更简单的命令,例如:
ls -l /tmp ; echo "hi there"
或者如果您愿意:
ls -l /tmp && echo "hi there"
这行得通吗?
如果你想在运行 bash 后运行 ssh,你可以试试:
sudo bash -c "ssh server01"
【讨论】:
那可能是因为命令应该是程序名后跟参数,会直接传递给程序。要获得&& 和命令行解释器(例如bash)提供的其他功能,请尝试以下操作:
/bin/bash -c "command1 && command2"
【讨论】:
我尝试了我在之前回答中的建议。
可以在 putty 中运行 2 个简单的命令,用分号分隔。在我的示例中,我尝试使用 ls 和 echo。远程服务器运行它们,然后会话关闭。
我还尝试通过 ssh 连接到配置为不要求输入密码的远程服务器。在这种情况下,它也可以工作,我连接到第二台服务器,我可以在它上面运行命令。退出时,2 个连接将关闭。
所以,请让我们知道您真正需要/想要什么。
【讨论】:
您可以使用常规 shell 语法在 PuTTY 中执行两个连续的命令。例如。使用; 或&&。
但是你想在sudo bash shell 中执行ssh server01,对吧?
这不是两个连续的命令,是ssh server01在sudo bash内执行的命令。
所以你必须使用sudo命令行语法来执行ssh server01,比如
sudo bash ssh server01
【讨论】: