11: Scripts
EMG™ Edge Management Gateway User Guide
228
import subprocess
import datetime
import sys
num_args = len(sys.argv) - 1
if num_args < 2:
print("Usage: script_cli_radius.py <RADIUS server> <RADIUS secret>")
sys.exit(1)
print("Settings RADIUS server on EMG at ", end="")
now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M"))
server = sys.argv[1]
secret = sys.argv[2]
proc = subprocess.Popen(['clisession', '-U', 'sysadmin'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
# wait for prompt
while True:
output_str = proc.stdout.readline()
if b'list of commands' in output_str:
proc.stdin.write(b'\n')
proc.stdin.flush()
if b']> ' in output_str:
break
if b'Invalid local user' in output_str:
print("Invalid local user passed to clisession.")
proc.stdin.close()
proc.terminate()
proc.wait()
sys.exit(1)
# Run the RADIUS command
s = "set radius server 1 host " + " secret " + "\n"
b = bytearray(s.encode())
proc.stdin.write(b)
proc.stdin.flush()
while True:
output_str = proc.stdout.readline()
if b'RADIUS settings successfully updated' in output_str:
break
elif b'set radius' not in output_str:
# RADIUS command returned an error
s1 = str(output_str)
s2 = s1.split("\\r")[1]
print("RADIUS command returned: " + s2.split("\\n")[0])
proc.stdin.close()
proc.terminate()
proc.wait()
sys.exit(1)