from lxml import etree # find Discovery scan config cfg = etree.fromstring(gmp.send_command('').encode()) config_id = None for c in cfg.findall('.//config'): if (c.findtext('name') or '').strip() == 'Discovery': config_id = c.get('id') break print('config=' + str(config_id)) # find the target for the pbs (glpi-*) tg = etree.fromstring(gmp.send_command('').encode()) target_id = None for t in tg.findall('.//target'): if 'proxmox-pbs' in (t.findtext('name') or '') or '100.127.238.29' in (t.findtext('hosts') or ''): target_id = t.get('id') print('target=' + (t.findtext('name') or '')) break print('target_id=' + str(target_id)) # find the openvas scanner sc = etree.fromstring(gmp.send_command('').encode()) scanner_id = None for s in sc.findall('.//scanner'): if 'openvas' in (s.findtext('name') or '').lower() or 'OSP' in (s.findtext('type') or ''): scanner_id = s.get('id') break print('scanner=' + str(scanner_id)) if config_id and target_id and scanner_id: r = etree.fromstring(gmp.send_command( f'first-discovery-sectestbed-pbs [#389]' f'OAM lane first scan; sectestbed target, GLPI-fed' f'').encode()) task_id = r.findtext('.//task') if r.find('.//task') is not None else None print('create_status=' + str(r.get('status'))) if task_id is not None: tid = task_id.get('id') if hasattr(task_id, 'get') else task_id.text s = etree.fromstring(gmp.send_command(f'').encode()) print('start_status=' + str(s.get('status'))) print('task_id=' + str(tid))