[Twisted-Python] Sending commands when using Telnet client
donwsmith at gmail.com
Tue Feb 28 20:31:46 EST 2006
So, I have this working now. I can send commands to the telnet server,
dynamically. However, is there a way to supress the output of the data I get
back so it doesn't flood my shell (stdout)?
On 2/28/06, Alejandro J. Cura <alecu at vortech.com.ar> wrote:
> As you can see in twisted.internet.protocol.Factory
> def buildProtocol(self, addr):
> """Create an instance of a subclass of Protocol.
> The returned instance will handle input on an incoming server
> connection, and an attribute \"factory\" pointing to the creating
> Override this method to alter how Protocol instances get created.
> @param addr: an object implementing
> p = self.protocol()
> p.factory = self
> return p
> ReconnectingClientFactory inherits that method, so each TelnetClient
> instance it builds will have a self.factory you can use to access
> your cmd list.
> Hope that helps,
> On 2/28/06, Don Smith <donwsmith at gmail.com> wrote:
> > Yes, I'm sort of a Twisted newbie, so maybe this has an obvious answer,
> > I'm just not seeing it.
> > I have a Twisted program that I need to add in the ability to make a
> > telnet connection to a remote server and send some commands to it and
> > with the data received.
> > In my main program I have this line of code:
> > reactor.connectTCP("mytelnethost", 24,
> > Connections.TelnetConnection("myname of object",events,"command to
> > My Connections.TelnetConnection class looks like this:
> > from twisted.internet.protocol import Protocol,
> > from twisted.conch.telnet import Telnet
> > class TelnetClient(Telnet):
> > def connectionMade(self):
> > print "connection made"
> > self.write("\r\n")
> > def write(self, data):
> > print data
> > Telnet._write(self, data+"\r\n")
> > def dataReceived(self, data):
> > print "received:", data
> > if "User Name:" in data:
> > self.write("user")
> > if "Password:" in data:
> > self.write("password")
> > if ">" in data:
> > time.sleep(2)
> > self.write("connect")
> > if "Connector Name:" in data:
> > time.sleep(2)
> > self.write("another command")
> > class TelnetConnection(Connection, ReconnectingClientFactory):
> > """ Telnets to host:port and executes cmd. cmd """
> > protocol = TelnetClient
> > def __init__(self, name, eventQueue, cmd=None):
> > Connection.__init__(self, name)
> > def clientConnectionFailed(self, connector, reason):
> > print 'connection failed:', reason.getErrorMessage()
> > def clientConnectionLost(self, connector, reason):
> > print 'connection lost:', reason.getErrorMessage()
> > This all works great, except that the command sequence is hard coded in
> > TelnetClient class. I want to be able to reference the "cmd" parameter,
> > which could be a list of commands to iterate over,etc. But I don't see
> how I
> > can access the "cmd" parameter that gets passed into the
> > class from within the TelnetClient class.
> > I'm really desparate for some help, I've been racking my brain on this
> > yesterday morning.
> > Thanks,
> > Don
> > _______________________________________________
> > Twisted-Python mailing list
> > Twisted-Python at twistedmatrix.com
> > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Twisted-Python