2016-10-12 3 views
2

모두 안녕하세요!파이썬 텔넷 클라이언트

현재 일부 Telnetlib (https://docs.python.org/2/library/telnetlib.html)을 Python 2.7에 사용하여 일부 외부 장치와 통신하려고합니다.

import sys 
import telnetlib 
tn_ip = xxxx 
tn_port = xxxx 
tn_username = xxxxx 
tn_password = xxxx 

searchfor = "Specificdata" 

def telnet(): 
    try: 
     tn = telnetlib.Telnet(tn, tn, 15) 
     tn.set_debuglevel(100) 
     tn.read_until("login: ") 
     tn.write(tn_username + "\n") 
     tn.read_until("Password: ") 
     tn.write(tn_password + "\n") 
     tn.read_until(searchfor) 
     print "Found it!" 
    except: 
     print "Unable to connect to Telnet server: " + tn_ip 

telnet() 

그리고 난 내가 필요한 잡을 때까지 (꽤 많은 인) 출력있어 모든 데이터를 이동하기 위해 노력하고있어 :

내가 설정 한 기본을 가지고있다. 그것은 꽤 괜찮은에서 로그인하고, 심지어 내가 찾고있는 데이터를 발견하고 내 메시지를 찾았습니다. 다른 데이터 (또는 반복되는 데이터가있을 수 있으므로 telnet을 사용하여 연결을 유지하는 방법을 찾고 있습니다.) 내가 로그 오프하고 다시 로그인 한 경우 실종 될 수 있습니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

+0

필요한 특정 정보 목록이 있습니까? 아니면 텔넷 연결을 무기한 열어 두시겠습니까? – VergeA

+0

의견을 남겨주셔서 감사합니다! 나는 여러 가지 정보를 찾고있다. 트리거되면 다른 것이 활성화 될 것이므로 같은 시간에 검색하는 동안 연결을 열린 상태로 유지하고 싶습니다. – user5740843

+0

텔넷 연결 개체를 클래스의 인스턴스 변수로 만들 수 있습니다. 클래스의 생성/초기화 중에 로그인 프로 시저를 수행하면 인스턴스 변수에 위임하여 필요한만큼 read_until() 메서드를 호출 할 수 있습니다. 클래스가 소멸 될 때/더 이상 연결이 필요하지 않을 때 닫습니다. – VergeA

답변

2

외부 장치에 한 번 연결하고 특정 문자열을 볼 때마다 메시지를 인쇄하고 싶은 것처럼 보입니다.

import sys 
import telnetlib 
tn_ip = "0.0.0.0" 
tn_port = "23" 
tn_username = "xxxxx" 
tn_password = "xxxx" 

searchfor = "Specificdata" 


def telnet(): 
    try: 
     tn = telnetlib.Telnet(tn_ip, tn_port, 15) 
    except: 
     print "Unable to connect to Telnet server: " + tn_ip 
     return 
    tn.set_debuglevel(100) 
    tn.read_until("login: ") 
    tn.write(tn_username + "\n") 
    tn.read_until("Password: ") 
    tn.write(tn_password + "\n") 
    while True: 
     tn.read_until(searchfor) 
     print "Found it" 

telnet()