0

我需要备份 HP ProCurve 的配置,并且需要通过 SSH 来完成。

ProCurve shell 是交互式的,我不能这样写:

$ ssh user@ip 'command1; command2'

...因为 shell 给了我一个错误——可能是因为机器实际上没有类似 Unix 的 shell。我需要连接,输入密码,然后执行两个命令。

4

2 回答 2

3

使用 Procurve/Cisco 设备,您不能简单地运行ssh hostname command. 您需要使用一些可以与交互式 ssh 会话一起使用的工具,即 expect、pexpect 或类似的东西。另一种解决方案是使用socat

(sleep 5; echo ${PASSWORD}; sleep 2; echo ; echo command1; sleep 2) \
| socat - EXEC:"ssh ${SWITCH}",setsid,pty,ctty
于 2012-06-15T13:11:41.137 回答
0

我不确定我是否完全理解你的问题。您是否尝试运行多个命令?你试过sh -c吗?

ssh user@ip sh -c "command1; command2"

来自man sh

       -c               Read commands from the command_string operand instead of from the standard input.  Special parameter 0 will be set from the command_name operand
                        and the positional parameters ($1, $2, etc.)  set from the remaining argument operands.
于 2012-06-15T12:50:36.083 回答