2016-05-18 2 views
1
import getpass 
import sys 
import telnetlib 

host = "10.28.103.126" 
user = b"apc" 
password = b"apc" 
outlet = b"8" 

tnObject = telnetlib.Telnet(host) 
print("yes") 
tnObject.read_until(b"User Name :") 
tnObject.write(user + b"\n") 
print("sent user") 
tnObject.read_until(b" ") 
tnObject.write(password + b"\n") 
print("sent password") 
tnObject.read_until(b"Name ") 
tnObject.write(b"1" + b"\n") 
print("sent first command") 
tnObject.read_until(b">") 
tnObject.write(outlet + b"\n") 
print("sent second command") 
tnObject.read_until(b">") 
tnObject.write(b"1" + b"\n") 
print("sent third command") 
tnObject.read_until(b">") 
tnObject.write(b"2" + b"\n") #(1 is ON) (2 is OFF) 
print("sent fourth command") 
tnObject.read_until(b"Enter ") 
tnObject.write(b"yes" + b"\n" + b"\n") 
tnObject.read_until(b">") 
tnObject.close() 

print(tnObject.read_all()) 

Я пробовал десятки различных комбинаций строк, которые следует читать, я попытался добавить пробелы до и после, написание и просто b "", чтобы ожидать пробела, но ничего не работает, чтобы отправить первую команду , Остальные 3 строки были прочитаны просто отлично. Что является альтернативой этому read_until?read_until Telnetlib в Python не будет читать ожидаемую строку. Что такое альтернативы?

Кроме того, я пробовал спать (.5) и спал (1), но это тоже не сработало. Я также пытался просто написать строки в буфер, не дожидаясь read_until. Помогите!

ответ

0

Вы пытались посмотреть эту тему? Python - telnet - automation APC PDU - способ исправления этой проблемы заключался в том, чтобы добавить «\ r \ n» при написании имени пользователя и пароля. Таким образом, вы должны использовать: tnObject.read_until (б "Имя:") tnObject.write (пользователь + Ь "\ г \ п") tnObject.read_until (б»«) tnObject.write (пароль + б «\ г \ п»)

Нет необходимости использовать tnObject.read_until (б «>»)

Заметим, что для других команд, вы можете оставить «\ п» в конце: tnObject.write (b "userList \ n") должен работать нормально

Я пробовал это на моей системе APC, и это сработало.

Надеюсь, что это сработает и для вас!