__author__ = 'RemiZOffAlex' __email__ = 'remizoffalex@mail.ru' import yaml import npyscreen from pyroute2 import NDB ndb = NDB() def network_config(ip, mask, gateway): # ip = IPRoute() # index = ip.link_lookup(ifname='em1')[0] # ip.addr('add', index, address='192.168.0.1', mask=24) # ip.close() # ip = IPDB() # with ip.interfaces.br0 as br0: # em1.add_ip('{ip}/{mask}'.format(ip=ip, mask=mask)) # ip.release() with ndb.interfaces['br0'] as br0: address = '{ip}/{mask}'.format(ip=ip, mask=mask) br0.add_ip(address).commit() ndb.routes.create(dst='0.0.0.0/0', gateway=gateway).commit() def TestApp(*args): # These lines create the form and populate it with widgets. # A fairly complex screen in only 8 or so lines of code - a line for each control. NetworkView = npyscreen.ActionForm(name = "SaaS",) ip = NetworkView.add(npyscreen.TitleText, name = "IP:",) mask = NetworkView.add(npyscreen.TitleText, name = "Netmask:",) gateway = NetworkView.add(npyscreen.TitleText, name = "Gateway:",) # This lets the user interact with the Form. NetworkView.edit() data = { 'ip': ip.value, 'mask': mask.value, 'gateway': gateway.value } with open('/root/network.yaml', 'w') as fd: yaml.dump(data, fd) network_config(**data) return data