Paramiko ssh输出未按预期输出

时间:2018-03-04 11:43:23

标签: python python-2.7 python-2.x paramiko

以下是代码:

client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("1.1.1.1",  username=username, password=password)
stdin, stdout, stderr = client.exec_command("set -units GB")
stdin, stdout, stderr = client.exec_command("vol show -vserver vs1 -volume test_volume -fields size")
return stdout.read()

从代码输出:

 vserver                          volume             size
 ------------------------  ------------------         ------
 vs1                       test_volume               1.07TB

设备输出:

 test01::> set -units GB

 test01::> vol show -vserver vs1 -volume test_volume -fields size

 vserver                          volume             size
 ------------------------  ------------------         ------
 vs1                       test_volume               1100GB

看起来paramiko没有在同一个频道中执行命令。我如何在python脚本中获得值“1100GB”?

提示:两个命令都应该在同一个会话中执行,这样我就能得到预期的输出,如设备

1 个答案:

答案 0 :(得分:2)

当您运行client.exec_command()时,这些命令实际上是在不同的执行会话中运行,因此,对set -units GB

的第二次调用,您对vol show -vserver vs1 -volume test_volume -fields size的呼叫实际上并未激活

您可以尝试用分号分隔命令并在一个会话中运行它们

stdin, stdout, stderr = client.exec_command(
    "set -units GB; vol show -vserver vs1 -volume test_volume -fields size")