Paramiko ssh 输出未按预期获得输出
Paramiko ssh output not getting output as expected
代码如下:
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”?
提示:这两个命令应该在同一个会话中执行,这样我就会像在设备中一样得到预期的输出
当您 运行 client.exec_command()
时,这些命令实际上 运行 在不同的执行会话中执行,因此您对 set -units GB
的调用实际上并未在您的第二个会话中激活致电 vol show -vserver vs1 -volume test_volume -fields size
您可以尝试用 semi-colon 分隔命令并 运行 在一个会话中将它们合并
stdin, stdout, stderr = client.exec_command(
"set -units GB; vol show -vserver vs1 -volume test_volume -fields size")
代码如下:
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”?
提示:这两个命令应该在同一个会话中执行,这样我就会像在设备中一样得到预期的输出
当您 运行 client.exec_command()
时,这些命令实际上 运行 在不同的执行会话中执行,因此您对 set -units GB
的调用实际上并未在您的第二个会话中激活致电 vol show -vserver vs1 -volume test_volume -fields size
您可以尝试用 semi-colon 分隔命令并 运行 在一个会话中将它们合并
stdin, stdout, stderr = client.exec_command(
"set -units GB; vol show -vserver vs1 -volume test_volume -fields size")