codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#!/usr/bin/env python import optparse from circuits.lib.io import Stdin from circuits.lib.sockets import TCPClient from circuits import __version__ as systemVersion from circuits.core import listener, Event, Component, Manager USAGE = "%prog [options] host [port]" VERSION = "%prog v" + systemVersion ### ### Functions ### def parse_options(): """parse_options() -> opts, args Parse any command-line options given returning both the parsed options and arguments. """ parser = optparse.OptionParser(usage=USAGE, version=VERSION) parser.add_option("-s", "--ssl", action="store_true", default=False, dest="ssl", help="Enable Secure Socket Layer (SSL)") opts, args = parser.parse_args() if len(args) < 1: parser.print_help() raise SystemExit, 1 return opts, args ### ### Components ### class Telnet(TCPClient): @listener("connect") def onCONNECT(self, host, port): print "Connected to %s" % host @listener("disconnect") def onDISCONNECT(self): print "Connection closed" @listener("read") def onREAD(self, data): print data.strip() @listener("stdin:read") def onINPUT(self, data): self.write(data) class Stats(Component): def __init__(self, *args, **kwargs): super(Stats, self).__init__(*args, **kwargs) self.bytes = {"in": 0, "out": 0} @listener("read") def onREAD(self, data): self.bytes["in"] += len(data) @listener("send") def onSEND(self, data): self.bytes["out"] += len(data) ### ### Main ### def main(): opts, args = parse_options() host = args[0] if len(args) > 1: port = int(args[1]) else: port = 23 manager = Manager() telnet = Telnet() stdin = Stdin() stats = Stats() manager += stdin manager += telnet manager += stats print "Trying %s..." % host telnet.open(host, port, ssl=opts.ssl) while telnet.connected: try: manager.flush() stdin.poll() telnet.poll() except KeyboardInterrupt: break telnet.close() manager.flush() print "Traffic" print " In: %d bytes" % stats.bytes["in"] print " Out: %d bytes" % stats.bytes["out"] ### ### Entry Point ### if __name__ == "__main__": main()
Private
[
?
]
Run code
Submit