使用Paramiko无法从exec_command接收ifconfig数据

时间:2019-04-05 17:15:40

标签: python linux ssh paramiko

我已经编写了一个连接到虚拟机的代码(使用SSH和Paramiko)并执行几个命令。但是我没有从ifconfig命令获得结果(其余命令仍然正常) 信息:

  • Python版本:3.7
  • Paramiko版本:2.4.2
  • 操作系统:Linux 4.18

我的代码:

#!/usr/bin/env python3

import paramiko
import getpass


def ssh_connect(host, port):

    USERNAME = input("username: ")
    PASSWORD = getpass.getpass("password: ")
    CMDs = ['pwd', 'ifconfig', 'lsblk']
    try:
        ssh_client = paramiko.SSHClient()
        ssh_client.load_system_host_keys()
        ssh_client.connect(host, port=port, username=USERNAME, password=PASSWORD)
        for CMD in CMDs:
            print(f"{USERNAME}@{host}$ {CMD}")
            _, stdout, stderr = ssh_client.exec_command(CMD.strip())
            data_array_return = stdout.read().decode()
            for line in data_array_return.split("\n"):
                print(str(line))
        ssh_client.close()
    except Exception as e:
        print(e)


def main():
    HOST = input("hostname: ")
    PORT = int(input("port: "))
    ssh_connect(HOST, PORT)


if __name__ == "__main__":
    main()

我的输出

ctnguyenvn[paraSSH]$ ./paramiko_ssh_simple.py 
hostname: 192.168.145.10
port: 22
username: linux-victim
password: 
linux-victim@192.168.145.10$ pwd
/home/linux-victim

linux-victim@192.168.145.10$ ifconfig

linux-victim@192.168.145.10$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   30G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 27.7G  0 part /
sr0     11:0    1 1024M  0 rom 

我认为我的代码没有错。如何从ifconfig命令获得结果?

stderr

ifconfig显示:

  

bash:ifconfig:找不到命令

1 个答案:

答案 0 :(得分:0)

输入ifconfig的完整路径。

您可以通过以下命令获取它:

which ifconfig