mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-03 20:27:54 +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