Python telnet client
<p>Everyone, hello!</p>

<p>I'm currently trying to use Telnetlib (<a href="https://docs.python.org/2/library/telnetlib.html" rel="nofollow">https://docs.python.org/2/library/telnetlib.html</a>) for Python 2.7 to communicate with some external devices.</p>

<p>I have the basics set up:</p>

<pre><code>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()
</code></pre>

<p>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.</p>

<p>Does anyone know how to do this?</p>

<p>Seems like you want to connect to external device once and print a message each time you see a specific string.</p>

<pre><code>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()
</code></pre>

python telnet telnetlib