mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-31 18:58:01 +00:00
mux_client.py : added to lanforge-scripts from https://github.com/greearb/mux_serial
Signed-off-by: Chuck SmileyRekiere <chuck.smileyrekiere@candelatech.com>
This commit is contained in:
committed by
shivam
parent
669ba08ef2
commit
9ffa08951c
126
mux_client.py
Executable file
126
mux_client.py
Executable file
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
'''
|
||||
NAME:
|
||||
mux_client.py
|
||||
|
||||
PURPOSE:
|
||||
a client, used to interact with the connected serial port server mux
|
||||
|
||||
EXAMPLE:
|
||||
./mux_client.py --host "local_host" --port 23200
|
||||
|
||||
NOTES:
|
||||
|
||||
mux_client.py copied from https://github.com/greearb/mux_serial
|
||||
|
||||
Defaults:
|
||||
_default_host = 'localhost'
|
||||
_default_port = 23200
|
||||
|
||||
'''
|
||||
|
||||
import sys
|
||||
if sys.version_info[0] != 3:
|
||||
print("This script requires Python3")
|
||||
exit()
|
||||
|
||||
import socket
|
||||
import argparse
|
||||
import telnetlib
|
||||
|
||||
_default_host = 'localhost'
|
||||
_default_port = 23200
|
||||
|
||||
|
||||
class mux_client():
|
||||
def __init__(self, host=_default_host, port=_default_port):
|
||||
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.tn = None
|
||||
|
||||
def interact(self):
|
||||
print(
|
||||
"MUX > Connected to {host}:{port}".format(
|
||||
host=self.host,
|
||||
port=self.port))
|
||||
print("MUX > Use ctrl+c to stop ..")
|
||||
|
||||
self.tn = telnetlib.Telnet(self.host, self.port)
|
||||
try:
|
||||
self.tn.interact()
|
||||
|
||||
except socket.error as e:
|
||||
print('\nMUX > Socket error: %s' % e.strerror, file=sys.stderr)
|
||||
|
||||
except (KeyboardInterrupt, SystemExit):
|
||||
pass
|
||||
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def start_telnet(self):
|
||||
self.tn = telnetlib.Telnet(self.host, self.port)
|
||||
|
||||
def write_str(self, cmd):
|
||||
cmd = cmd.encode('utf-8')
|
||||
self.tn.write(cmd)
|
||||
|
||||
def read_lazy(self):
|
||||
return self.tn.read_lazy()
|
||||
|
||||
def read_until(self, prompt):
|
||||
byte_prompt = prompt.encode('utf_8')
|
||||
info = self.tn.read_until(byte_prompt, timeout=5)
|
||||
return info
|
||||
|
||||
def close_silent(self):
|
||||
self.sock.close()
|
||||
|
||||
def close(self):
|
||||
print('\nMUX > Closing...', file=sys.stderr)
|
||||
self.sock.close()
|
||||
print('MUX > Done! =)', file=sys.stderr)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog='mux_client.py',
|
||||
formatter_class=argparse.RawTextHelpFormatter,
|
||||
epilog='''\
|
||||
mux_client.py:
|
||||
''',
|
||||
|
||||
description='''\
|
||||
NAME:
|
||||
mux_client.py
|
||||
|
||||
PURPOSE:
|
||||
a client, used to interact with the connected serial port server mux
|
||||
|
||||
EXAMPLE:
|
||||
./mux_client.py --host "local_host" --port 23200
|
||||
|
||||
NOTES:
|
||||
Defaults:
|
||||
_default_host = 'localhost'
|
||||
_default_port = 23200
|
||||
|
||||
''')
|
||||
parser.add_argument('--host', help='Host', default=_default_host)
|
||||
|
||||
parser.add_argument('--port',help='Host port', type=int, default=_default_port)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
client = mux_client(host=str(args.host), port=int(args.port))
|
||||
client.interact()
|
||||
|
||||
if not sys.flags.interactive:
|
||||
client.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user