Paramiko ssh输出没有按预期输出

问题描述 投票:0回答:1

以下是代码:

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”?

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

python python-2.7 python-2.x paramiko
1个回答
2
投票

当你运行client.exec_command()时,命令实际上是在不同的exec会话中运行,因此你第二次调用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")
© www.soinside.com 2019 - 2024. All rights reserved.