notebookvb
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run RouterOS commands over SSH. Creds from env: ROS_HOST, ROS_PORT, ROS_USER, ROS_PASS.
|
||||
Commands: one per line on stdin, or via --cmd. Prints output per command."""
|
||||
import os, sys, paramiko
|
||||
|
||||
host = os.environ["ROS_HOST"]
|
||||
port = int(os.environ.get("ROS_PORT", "22"))
|
||||
user = os.environ["ROS_USER"]
|
||||
pw = os.environ["ROS_PASS"]
|
||||
|
||||
cmds = []
|
||||
if "--cmd" in sys.argv:
|
||||
cmds = [sys.argv[sys.argv.index("--cmd") + 1]]
|
||||
else:
|
||||
cmds = [l.rstrip("\n") for l in sys.stdin if l.strip()]
|
||||
|
||||
cli = paramiko.SSHClient()
|
||||
cli.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
cli.connect(host, port=port, username=user, password=pw,
|
||||
look_for_keys=False, allow_agent=False, timeout=20)
|
||||
|
||||
for c in cmds:
|
||||
print(f"\n===== CMD: {c}")
|
||||
stdin, stdout, stderr = cli.exec_command(c, timeout=30)
|
||||
out = stdout.read().decode("utf-8", "replace")
|
||||
err = stderr.read().decode("utf-8", "replace")
|
||||
sys.stdout.write(out)
|
||||
if err.strip():
|
||||
sys.stdout.write("--- stderr ---\n" + err)
|
||||
cli.close()
|
||||
Reference in New Issue
Block a user