Я использую Python 3.7 Flask RestFul У меня есть данные, отправляемые в формате json в мое приложение Api Flask.данные, которые я получаю, выглядят следующим образом:
{'username': 'admin', 'password': 'mypassword', 'host': [{'address': '192.168.2.5', 'config': 'set system host-name device01', 'address': '192.168.2.2', 'config': 'set system host-name device02'}]}
список 'хост': может быть до нескольких сотен устройств / IP-адрес
Мне нужно проанализировать список и распечататьтолько IP-адрес и Config, поэтому мне нужно, чтобы он был:
192.168.2.5
192.168.2.2
и т. д .... чтобы я мог пройти через список IP-адресов и подключиться к устройству и применить конфигурацию, котораябудет отличаться для каждого устройства.
Структура, которая мне понадобится взамен, чтобы я мог выполнить цикл и подключиться к IP-адресу устройства, а затем применить конфигурацию ...
192.168.2.5
set system host-name device01
192.168.2.2
set system host-name device02
IP-адрес будет = IPS и конфиг будет = config
мой код Python ниже ...
app = Flask(__name__)
api = Api(app)
class build(Resource):
def post(self):
data = request.get_json(force=True)
print(data)
jobname = data['jobname']
username = data['username']
password = data['password']
configs = []
ips = []
for x in data['host']:
if 'address' in x:
ips.append(x['address'])
elif 'config' in x:
configs.append(x['config'])
commands = zip(ips, configs)
for command in commands:
iplist = '{}'.format(command[0])
print(iplist)
conf = '{}'.format(command[1])
print(conf)
# Connect to Device and load config
dev = Device(host=iplist, user=username, passwd=password)
dev.open()
print("connect to %s " % iplist)
dev.timeout = 600
#print(dev.cli("show version"))
dev.bind(cfg=Config)
dev.cfg.load(conf, format='set', merge=True)
dev.cfg.commit()
dev.close()
api.add_resource(build, '/build')
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0', port=5000)