Paramiko ssh与Windows主机的连接。 “ VBoxManage.exe guestcontrol运行”命令的空标准输出

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

我正在编写使用paramiko python库在virtualbox VM中执行bash脚本的python脚本。下面的代码段:

stdin, stdout, stderr = i[2].exec_command("\"\Program Files\Oracle\VirtualBox\VBoxManage.exe\" guestcontrol \"virtnet_proxy\" run --exe \"/home/username/show_ip.sh\" --username username --password password" )
exit_status = stdout.channel.recv_exit_status()          

if exit_status == 0:
    proxy_ip=stdout.readlines()
    print ("got proxy ip from host  ", i[0], proxy_ip, stderr.readlines())

连接到Windows主机和应该打印VM接口的IP地址。如果您在cmd中运行此命令,效果很好,但使用paramiko ssh客户端,stdout为空。如果您运行类似的代码,只是连接到linux virtualbox主机(并运行linux命令),则stdout.readlines()可以正常工作,并且包含bash脚本的输出。标准输出:

VBoxManage.exe: warning: Error getting stdout handle: VERR_NOT_IMPLEMENTED\r\n', 'VBoxManage.exe: warning: Error getting stderr handle: VERR_NOT_IMPLEMENTED\r\n

Bash脚本:

ips=$(hostname --all-ip-addresses)
read -ra arr <<< "$ips"
echo"${arr[0]}"

正如我所说,只有在连接到Windows主机并在客户机上运行vboxmanage命令时,stdout才为空。

谢谢你,Wojtek

python virtualbox paramiko
1个回答
0
投票

编辑:我已经将Windows主机上的ssh服务器从OpenSSH更改为FreeSSHd,并且代码起作用了!

© www.soinside.com 2019 - 2024. All rights reserved.