parent
3bf3d65ecc
commit
28bbaf97b0
7 changed files with 57 additions and 11 deletions
|
@ -5,6 +5,7 @@ from os.path import isfile, join
|
||||||
from debian import parse_debian
|
from debian import parse_debian
|
||||||
from freebsd import parse_freebsd
|
from freebsd import parse_freebsd
|
||||||
from freebox import parse_freebox
|
from freebox import parse_freebox
|
||||||
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
|
||||||
def find_os(content):
|
def find_os(content):
|
||||||
version = content.split("###### VERSION ######")[-1]
|
version = content.split("###### VERSION ######")[-1]
|
||||||
|
@ -19,17 +20,27 @@ def main():
|
||||||
mypath = "../oxidized/"
|
mypath = "../oxidized/"
|
||||||
|
|
||||||
onlyfiles = [mypath + f for f in listdir(mypath) if isfile(join(mypath, f))]
|
onlyfiles = [mypath + f for f in listdir(mypath) if isfile(join(mypath, f))]
|
||||||
|
env = Environment(loader = FileSystemLoader('../template'))
|
||||||
|
|
||||||
for file in onlyfiles:
|
for file in onlyfiles:
|
||||||
with open(file,"r") as f:
|
with open(file,"r") as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
current_os = find_os(content)
|
current_os = find_os(content)
|
||||||
if "freebsd" in current_os:
|
if "freebsd" in current_os:
|
||||||
parse_freebsd(content)
|
infos = parse_freebsd(content)
|
||||||
|
template = env.get_template('freebsd.rst.j2')
|
||||||
|
output = template.render(**infos)
|
||||||
|
print(output)
|
||||||
elif "debian" in current_os:
|
elif "debian" in current_os:
|
||||||
parse_debian(content)
|
infos = parse_debian(content)
|
||||||
|
template = env.get_template('debian.rst.j2')
|
||||||
|
output = template.render(**infos)
|
||||||
|
print(output)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
parse_freebox(content)
|
parse_freebox(content)
|
||||||
|
with open("../source/devices/{host}.rst".format(host=infos["hostname"].replace("\n","")), "w") as f:
|
||||||
|
f.write(output)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -22,9 +22,9 @@ def parse_debian(content):
|
||||||
result[current_section] = ""
|
result[current_section] = ""
|
||||||
else:
|
else:
|
||||||
if current_section:
|
if current_section:
|
||||||
result[current_section] += line
|
result[current_section] += line + "\n"
|
||||||
print(result["hostname"])
|
result["ip"] = parse_ip(result["ip"])
|
||||||
print(parse_ip(result["ip"]))
|
return result
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -1,5 +1,16 @@
|
||||||
#!/bin/env python3
|
#!/bin/env python3
|
||||||
|
|
||||||
|
def parse_ip(block):
|
||||||
|
result = {}
|
||||||
|
current_interface = ""
|
||||||
|
for line in block.splitlines():
|
||||||
|
if not line.startswith("\t"):
|
||||||
|
current_interface= line.split(":")[0]
|
||||||
|
result[current_interface] = []
|
||||||
|
elif line.strip().startswith("inet"):
|
||||||
|
result[current_interface].append(line.strip().split(" ")[1])
|
||||||
|
return result
|
||||||
|
|
||||||
def parse_freebsd(content):
|
def parse_freebsd(content):
|
||||||
current_section = ""
|
current_section = ""
|
||||||
result = {}
|
result = {}
|
||||||
|
@ -9,9 +20,11 @@ def parse_freebsd(content):
|
||||||
result[current_section] = ""
|
result[current_section] = ""
|
||||||
else:
|
else:
|
||||||
if current_section:
|
if current_section:
|
||||||
result[current_section] += line
|
result[current_section] += line + "\n"
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
#pprint(result)
|
#pprint(result)
|
||||||
|
result["ip"] = parse_ip(result["interfaces"])
|
||||||
|
return result
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
@ -7,7 +7,10 @@ Doc Infra
|
||||||
=========
|
=========
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
:glob:
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:caption: Contents:
|
:caption: Contents:
|
||||||
|
|
||||||
devices/*
|
devices/*
|
||||||
|
|
||||||
|
test
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{{ "=" * (host|length) }}
|
{{ "=" * (hostname|length) }}
|
||||||
{{ host }}
|
{{ hostname.replace("\n", "") }}
|
||||||
{{ "=" * (host|length) }}
|
{{ "=" * (hostname|length) }}
|
||||||
|
|
||||||
|
|
12
template/debian.rst.j2
Normal file
12
template/debian.rst.j2
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{% include "base.rst.j2" %}
|
||||||
|
network
|
||||||
|
-------
|
||||||
|
|
||||||
|
ip
|
||||||
|
##
|
||||||
|
|
||||||
|
========= ==============
|
||||||
|
interface adresses
|
||||||
|
========= =============={% for interface in ip %}
|
||||||
|
{{ "{:<10}".format(interface["ifname"]) }} {% for ip in interface["addr_info"] %} {{ ip["local"] }}/{{ ip["prefixlen"]}}{% endfor %}
|
||||||
|
{% endfor %}========= ==============
|
|
@ -1,3 +1,10 @@
|
||||||
{% include "base.rst.j2" %}
|
{% include "base.rst.j2" %}
|
||||||
services
|
|
||||||
--------
|
network
|
||||||
|
=======
|
||||||
|
|
||||||
|
========= ==========
|
||||||
|
interface ip
|
||||||
|
========= =========={% for interface in ip %}
|
||||||
|
{{ "{:<10}".format(interface.replace("\n","")) }} {% for addr in ip[interface] %} {{ addr.replace("\n","") }}{% endfor %}{% endfor %}
|
||||||
|
========= ==========
|
||||||
|
|
Loading…
Add table
Reference in a new issue