[ create a new paste ] login | about

Link: http://codepad.org/V32fsqKt    [ raw code | output | fork ]

Python, pasted on Jan 5:
#!/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()


Output:
1
2
3
4
Traceback (most recent call last):
  Line 5, in <module>
    from circuits.lib.io import Stdin
ImportError: No module named circuits.lib.io


Create a new paste based on this one


Comments: