Python - 从sh命令捕获输出,获取IP地址并运行ping

时间:2017-06-18 23:13:24

标签: python network-programming cisco-ios

下面是我的工作代码,用于在Cisco Routers上显示我的路由器arp表。

我手头有一项任务,要求我从" sh arp"的输出中读取特定值。命令并将其用作要在Cisco路由器上执行的另一个命令的输入。

路由器中的

命令:

1- sh arp vrf INTERNET | INC 0835.71

2- ping vrf INTERNET 100.124.162.230 **

我已完成第1步。我可以获得输出,但我需要肝脏来完成第2步,捕获IP" 100.124.162.230对它运行ping。

打印(" Ping NMD ....")

chmod 440 /etc/sudoers.d/redmine

输出:

r-a> sh arp vrf INTERNET | INC 0835.71 Internet 100.124.162.230 74 0835.71ef.d0a1 ARPA GigabitEthernet0 / 0.901

2-下一步是获取IP并运行ping请帮助。

我提取了我的IP地址,现在我想对提取的IP运行ping,我怎么能在python中执行此操作。请帮忙..

r-a> sh arp vrf INTERNET |公司0835 Internet 100.114.162.230 110 0835.71ef.d0a1 ARPA GigabitEthernet0 / 0.901 R-A> [' 100.114.162.230']

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect("r-a" ,timeout = 10)
    chan = ssh.invoke_shell()
    time.sleep(.1)
    chan.send('sh arp vrf INTERNET | INC  0835.71 \n')
    time.sleep(20)


    #Print command output
    while chan.recv_ready():
            output = str(chan.recv(99999999))
            output.encode('utf-8')
            #print(type(output))
            #print("\n\n\nPrinting total output: {0}".format(output))

1 个答案:

答案 0 :(得分:0)

这样的事情可能有用,但是如果你能够ssh到它那么我可能会错过一些东西吗?:

_, stdout, _ = ssh.exec_command('hostname')
hostname = stdout.read()
ssh.close()
HOST_UP  = True if os.system("ping -c 1 " + hostname) is 0 else False

相关: