aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-09-21 00:56:08 -0400
committerJesse Luehrs <doy@tozt.net>2014-09-21 00:56:08 -0400
commit577456ba027587bd5825b9ec9f0e157cf3180a1e (patch)
tree9237bde4d43314a91db31a9b33d161cc4989cfb4
parentb0e191f20fd7b2ce5758daa6a11d91d629bf8f34 (diff)
downloadpython-termcast-client-577456ba027587bd5825b9ec9f0e157cf3180a1e.tar.gz
python-termcast-client-577456ba027587bd5825b9ec9f0e157cf3180a1e.zip
handle option parsing
-rw-r--r--termcast_client.py46
1 files changed, 36 insertions, 10 deletions
diff --git a/termcast_client.py b/termcast_client.py
index 22941f8..3b79a20 100644
--- a/termcast_client.py
+++ b/termcast_client.py
@@ -1,16 +1,20 @@
+import argparse
import os
import pty
import socket
import sys
class Client(object):
- def __init__(self):
- pass
+ def __init__(self, host, port, username, password):
+ self.host = host
+ self.port = port
+ self.username = username
+ self.password = password
def run(self, argv):
sock = socket.socket()
- sock.connect(("tozt.net", 2201))
- sock.send(b'hello doy asdf\n\033]499;{"geometry":[80,24]}\007')
+ sock.connect((self.host, self.port))
+ sock.send(self._build_connection_string().encode('utf-8'))
pty.spawn(argv, lambda fd: self._master_read(fd, sock))
def _master_read(self, fd, sock):
@@ -18,10 +22,32 @@ class Client(object):
sock.send(data)
return data
+ def _build_connection_string(self):
+ auth = "hello %s %s\n" % (self.username, self.password)
+ metadata = '\033]499;{"geometry":[80,24]}\007' # XXX
+ return auth + metadata
+
if __name__ == '__main__':
- client = Client()
- # XXX options
- if len(sys.argv) > 1:
- client.run(sys.argv[1:])
- else:
- client.run(os.getenv("SHELL", default="/bin/sh"))
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--host', default="noway.ratry.ru")
+ parser.add_argument('--port', type=int, default=31337)
+ parser.add_argument('--username', default=os.getenv("USER"))
+ parser.add_argument('--password', default="asdf")
+ parser.add_argument(
+ 'command',
+ nargs=argparse.REMAINDER,
+ )
+
+ args = parser.parse_args(sys.argv[1:])
+
+ client = Client(
+ host=args.host,
+ port=args.port,
+ username=args.username,
+ password=args.password,
+ )
+
+ command = args.command
+ if len(args.command) < 1:
+ command = os.getenv("SHELL", default="/bin/sh")
+ client.run(command)