from twisted.internet.protocol import ServerFactory, Protocol
from twisted.conch.telnet import StatefulTelnetProtocol
from twisted.internet import reactor
from time import sleep
class MyProtocol(StatefulTelnetProtocol):
def connectionMade(self):
print "DEBUG: connectionMade called"
self.sendLine("***************************************\r\n")
self.sendLine("Welcome to the Simplified Telnet Server\r\n")
self.sendLine("***************************************\r\n")
sleep(2)
self.transport.write("Can also send a line this way.\r\n")
self.clearLineBuffer()
def lineReceived(self, line):
print "DEBUG: lineReceived called with %s" % line.strip()
if line.strip() != "exit":
self.sendLine("***************************************\r\n")
#self.transport.write("TRANSPORT_WRITE: GOT LINE='%s'\n" % (str(line.strip())))
else:
print "telnet killed in line: %s" % str(line.strip())
self.sendLine("TelnetShell killed. Bye Bye ...")
self.transport.loseConnection()
self.clearLineBuffer()
def connectionLost(self, reason):
print "DEBUG: connectionLost called with: %s" % str(reason)
def CreateMyFactory():
factory = ServerFactory()
factory.protocol = MyProtocol
return factory
if __name__ == "__main__":
MaFactory = CreateMyFactory()
reactor.listenTCP(8023, MaFactory)
reactor.run()
Professional programmer; amateur home handyman (on our home only); tinkerer; husband; father of 3; attempting to be a renaissance guy (to know at least a little about a lot of subjects, a doomed pursuit in an information age); geek-arts-and-sciences enthusiast. Interest areas: Science fiction, wind turbines, electric cars, renewable energy, making things.
Wednesday, November 30, 2011
I've recently run into the need to create a simple StatefulTelnetProtocol Telnet server.
But, most of the examples have lots of extra cruft in the way. So, here's what I came up with by
removing some extras from a post I found online:
--> Note: I don't know the difference (yet) between doing a self.sendLine() and a self.transport.write() call. Feel free to comment if you know the distinction.
Subscribe to:
Comments (Atom)