Search code examples
pythontelnettelnetlib

Python telnet client


Everyone, hello!

I'm currently trying to use Telnetlib (https://docs.python.org/2/library/telnetlib.html) for Python 2.7 to communicate with some external devices.

I have the basics set up:

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()

And I'm trying to go through all of the data it's outputting (which is quite a lot) until I catch what I need. Although it is logging in quite fine, and even finds the data I'm looking for, and prints my found it message, I'm trying for a way to keep the connection with telnet open as there might be other data (or repeated data) i would be missing if I logged off and logged back in.

Does anyone know how to do this?


Solution

  • Seems like you want to connect to external device once and print a message each time you see a specific string.

    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()