【发布时间】:2015-06-03 05:05:34
【问题描述】:
我想在 Python 的 Paramiko 模块中使用同一个 SSH 对象多次发出exec_command()。
目标是从同一会话中获取输出。
有办法吗? exec_command() 在完成执行命令后关闭通道,此后需要一个新的 ssh 对象来执行以下命令.. 但会话会有所不同,这是我不想要的。
代码
import os, sys,
import connectlibs as ssh
s = ssh.connect("xxx.xx.xx.xxx", "Admin", "Admin")
channel = s.invoke_shell()
channel.send("net use F: \\\\xyz.xy.xc.xa\\dir\n")
>>>32
channel.send("net use")
>>>7
channel.recv(500)
'Last login: Tue Jun 2 23:52:29 2015 from xxx.xx.xx.xx\r\r\n\x1b]0;~\x07\r\r\n\x1b[32mAdmin@WIN \x1b[33m~\x1b[0m\r\r\n$ net use F: \\\\xyz.xy.xc.xa\\dir\r\nSystem error 67 has occurred.\r\r\n\r\r\nThe network name cannot be found.\r\r\n\r\r\n\x1b]0;~\x07\r\r\n\x1b[32mAdmin@WIN \x1b[33m~\x1b[0m\r\r\n$ net use'
>>>
【问题讨论】:
-
您混淆了“频道”和“会话”。你到底想做什么? “从同一个会话中获取输出”是什么意思?
-
嗨 Martin:我想要使用相同“ssh 对象”的命令的输出 - 这意味着相同的会话。会话可以有多个通道 - 对吧?我想一个接一个地发送命令,并确保输出正常。
-
例如,如何在python中执行等价的:pwd cd .. pwd