Форум сайта python.su
0
Приветствую!
Есть такая задача.
Подключиться по telnet к железке, прочесть поток, закрывающих символов в потоке нет, он просто идёт и всё. Закрыть соединение по достижении например минуты или 10 строк. забросить всё это в файл.
И так.
В документации есть пример.
import getpass import telnetlib HOST = "localhost" user = input("Enter your remote account: ") password = getpass.getpass() tn = telnetlib.Telnet(HOST) tn.read_until(b"login: ") tn.write(user.encode('ascii') + b"\n") if password: tn.read_until(b"Password: ") tn.write(password.encode('ascii') + b"\n") tn.write(b"ls\n") tn.write(b"exit\n") print(tn.read_all().decode('ascii'))
Офлайн
0
открыть файл в байтовом режиме??
Офлайн
0
MouseКак выяснилось, новый питон ещё та кривятина. Проще оказалось использовать метод read_very_eager(). А запускать сам скрипт на линуксе. Он и файл создаёт и кладёт в него всю инфу так как я хочу.
открыть файл в байтовом режиме??
Офлайн
253
crazyenimal
новый питон ещё та кривятина
crazyenimalДумаю вы горячитесь.
. А запускать сам скрипт на линуксе
Офлайн
0
doza_and
Выкладывайте сюда, вместе с вашей писалкой.
import time import telnetlib HOST = "***.***.***.***" PORT = "2300" user = "****" password = "******" f = open('smdr.log', 'a') tn = telnetlib.Telnet(HOST,PORT) tn.read_until(b"-") time.sleep(2) tn.write(user.encode('ascii') + b"\r") tn.read_until(b'Enter Password:') time.sleep(2) tn.write(password.encode('ascii') + b"\r") time.sleep(10) ## s = tn.read_all() s=tn.read_very_eager() tn.close() f=open('smdr.log','w') f.write(s) f.close()
Офлайн