Есть ли способ получить только результаты команд в telnetlib? - PullRequest
0 голосов
/ 31 мая 2019

в telnet через Putty я пишу команду: ip link show eth0 | awk '/ether/ {print $2}' и у меня есть MAC машины я пытаюсь получить MAC многих машин и сохранить их в файле, но когда я использую telnetlib, то получаю команду и результат команды.

import sys
import telnetlib

user = "root"
password = "root"

file = open("input.txt", "r")
for line in file:

    line = line.rstrip("\n")
    tn = telnetlib.Telnet(line)
    tn.read_until(b"login: ")
    tn.write(user.encode('ascii') + b"\n")
    tn.read_until(b"Password: ")
    tn.write(password.encode('ascii') + b"\n")

    tn.write(b"ip link show eth0 | awk '/ether/ {print $2}'\n")
    tn.write(b"exit\n")

    #output =  tn.read_until(b"exit\n").decode('ascii')
    output =  tn.read_all().decode('ascii')

    #print(output)

    for i in output.split("\n"):
        print(i)

    stdout=open(line + ".txt","w")
    stdout.write(output)

что я ожидаю:

02:45:4b:52:0a:04

но я получаю:

ip link show eth0 | awk '/ether/ {print $2}'
exit
root@cpu_ekor:~ ip link show eth0 | awk '/ether/ {print $2}'
02:45:4b:52:0a:04
root@cpu_ekor:~ exit
logout

или иногда:

root@cpu_ekor:~ ip link show eth0 | awk '/ether/ {print $2}'
02:45:4b:52:0a:04
root@cpu_ekor:~ exit
logout
...