我需要备份HP ProCurve的配置,我需要通过SSH来完成。
ProCurve shell是交互式的,我不能把它像:
$ ssh user@ip 'command1; command2'
...因为shell给了我一个错误 - 可能是因为机器实际上没有类似Unix的shell。我需要连接,输入密码,然后执行两个命令。
答案 0 :(得分:3)
使用Procurve / Cisco设备,您无法简单地运行ssh hostname command
。您需要使用一些可以与交互式ssh会话一起工作的工具,即期望,pexpect或类似的东西。另一种解决方案是使用socat
:
(sleep 5; echo ${PASSWORD}; sleep 2; echo ; echo command1; sleep 2) \
| socat - EXEC:"ssh ${SWITCH}",setsid,pty,ctty
答案 1 :(得分: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.