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))