远程linux主机上的Python接口模块

2024-05-15 21:00:10 发布

您现在位置:Python中文网/ 问答频道 /正文

带有netifaces的Python可以很好地收集本地主机上的ip和网络掩码信息,但我很难从远程服务器收集相同的信息。我猜netifaces不喜欢paramiko,也不喜欢子进程或操作系统在远程服务器上。你知道吗

def interface_details():

    for iface in netifaces.interfaces():

        if iface == 'lo':

            continue

        iface_details = netifaces.ifaddresses(iface)

        if iface_details.has_key(netifaces.AF_INET):

            ipv4 = iface_details[netifaces.AF_INET]

        return ipv4

它就是这样失败的:

# Using Paramiko to execute cmd.
>>> host_ssh.exec_command(interface_details())

   File "build/bdist.linux-x86_64/egg/paramiko/client.py", line 441, in exec_command
  File "build/bdist.linux-x86_64/egg/paramiko/channel.py", line 60, in _check
  File "build/bdist.linux-x86_64/egg/paramiko/channel.py", line 231, in exec_command
  File "build/bdist.linux-x86_64/egg/paramiko/message.py", line 285, in add_string
  File "build/bdist.linux-x86_64/egg/paramiko/common.py", line 170, in asbytes
Exception: Unknown type

谢谢


Tags: inpybuildparamikoegglinuxlinedetails
1条回答
网友
1楼 · 发布于 2024-05-15 21:00:10

exec_command执行命令,而不是python函数。例如,可以执行ifconfig,然后解析其输出。或者,可以使用RPyC远程执行实际的Python代码。它需要在服务器上运行一个特殊的服务,所以不像SSH那么简单。但是运行Python代码并直接与结果交互可能会有所帮助。你知道吗

相关问题 更多 >