[Twisted-Python] Sending commands when using Telnet client

Don Smith 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)?

Thanks,

Don

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
>         factory.
>
>         Override this method to alter how Protocol instances get created.
>
>         @param addr: an object implementing
> L{twisted.internet.interfaces.IAddress}
>         """
>         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,
> --
> alecu
>
> 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,
> but
> > I'm just not seeing it.
> >
> > I have a Twisted program that I need to add in the ability to make a
> client
> > telnet connection to a remote server and send some commands to it and
> deal
> > 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
> run"))
> >
> > My Connections.TelnetConnection class looks like this:
> >
> > from twisted.internet.protocol import Protocol,
> ReconnectingClientFactory
> > 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
> the
> > 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
> TelnetConnection
> > class from within the TelnetClient class.
> >
> > I'm really desparate for some help, I've been racking my brain on this
> since
> > 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
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20060228/5555d8ec/attachment.htm 


More information about the Twisted-Python mailing list