Skip to content
Snippets Groups Projects
Commit 62adaab4 authored by Erik Reid's avatar Erik Reid
Browse files

updated test data and added automation script

parent 4182d06a
No related branches found
No related tags found
No related merge requests found
Showing
with 107 additions and 4 deletions
Screen length set to 0
Screen length set to 0
Screen length set to 0
Screen length set to 0
import logging
import os
import multiprocessing
from inventory_provider import juniper
OUTPUT_DIR = os.path.dirname(__file__)
SSH_DIR = os.path.join(
os.path.dirname(__file__),
"..",
"..",
"inventory_provider",
"ssh")
SSH_PARAMS = {
"private-key": os.path.join(SSH_DIR, "monitor_dsa"),
"known-hosts": os.path.join(SSH_DIR, "monitor_known_hosts")
}
SHELL_COMMANDS = []
for c in juniper.shell_commands():
SHELL_COMMANDS.append({"key": c["key"], "command": c["command"]})
SHELL_COMMANDS.append({
"key": "bgpv4",
"command": r'show configuration routing-instances IAS protocols bgp | display set | match neighbor | match description | match "GEANT-IX | GEANT-IX-"'
})
SHELL_COMMANDS.append({
"key": "bgpv6",
"command": r'show configuration routing-instances IAS protocols bgp | display set | match neighbor | match description | match "GEANT-IXv6 | GEANT-IXv6-"'
})
ROUTER_HOSTNAMES = [
'mx2.ath.gr.geant.net',
'mx1.tal.ee.geant.net',
'mx2.tal.ee.geant.net',
'mx2.rig.lv.geant.net',
'mx1.kau.lt.geant.net',
'mx2.kau.lt.geant.net',
'mx2.zag.hr.geant.net',
'mx2.lju.si.geant.net',
'mx1.bud.hu.geant.net',
'mx1.pra.cz.geant.net',
'mx2.bra.sk.geant.net',
'mx1.lon.uk.geant.net',
'mx1.vie.at.geant.net',
'mx2.bru.be.geant.net',
'mx1.poz.pl.geant.net',
'mx1.ams.nl.geant.net',
'mx1.fra.de.geant.net',
'mx1.par.fr.geant.net',
'mx1.gen.ch.geant.net',
'mx1.mil2.it.geant.net',
'mx1.lis.pt.geant.net',
'mx2.lis.pt.geant.net',
'mx1.mad.es.geant.net',
'mx1.sof.bg.geant.net',
'mx1.buc.ro.geant.net',
'mx1.ham.de.geant.net',
'mx1.dub.ie.geant.net',
'mx1.dub2.ie.geant.net',
'mx1.mar.fr.geant.net',
'mx1.lon2.uk.geant.net',
'mx1.ath2.gr.geant.net',
]
def ssh_exec_commands(hostname, ssh_params, commands, q):
logging.debug("[ENTER>>] ssh_exec_comands: %r" % hostname)
q.put(list(juniper.ssh_exec_commands(hostname, ssh_params, commands)))
logging.debug("[EXIT>>] ssh_exec_comands: %r" % hostname)
def main():
processes = []
for hostname in ROUTER_HOSTNAMES:
q = multiprocessing.Queue()
p = multiprocessing.Process(
target=ssh_exec_commands,
args=(
hostname,
SSH_PARAMS,
[c["command"] for c in SHELL_COMMANDS],
q))
p.start()
processes.append({"hostname": hostname, "process": p, "queue": q})
for p in processes:
logging.debug("waiting for shell results from %r" % p["hostname"])
for c, o in zip(SHELL_COMMANDS, p["queue"].get()):
if not c["key"]:
continue
filename = os.path.join(
OUTPUT_DIR,
"%s-%s.output" % (p["hostname"], c["key"]))
with open(filename, "w") as f:
f.write(o)
p["process"].join()
logging.debug("saved shell results from %r" % p["hostname"])
if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
main()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment