Jan-21-2022, 12:54 PM
(This post was last modified: Jan-24-2022, 10:56 AM by wardancer84.
Edit Reason: fixed? error tags
)
hi,
i',m trying to parse sudo files and inserting the results into a mysql table for eaysier analyzing an so on. parsing works well sof far, but pymysql will not let me do the insert.
the script:
wbr
chris
i',m trying to parse sudo files and inserting the results into a mysql table for eaysier analyzing an so on. parsing works well sof far, but pymysql will not let me do the insert.
the script:
#!/usr/bin/env python3
import sys
import os
import pprint
from collections import defaultdict
import pymysql
import pymysql.cursors
from SudoersLib import *
input_path="/admin/sudoers"
infiles= os.listdir(input_path)
connection = pymysql.connect(host='localhost',
user='sudodb',
password='sudodb',
database='sudoersdb',
cursorclass=pymysql.cursors.DictCursor)
for infile in infiles:
infile=os.path.join(input_path, infile)
sudo_obj = Sudoers(path=infile)
file_name = os.path.basename(infile)
sudohost = file_name.split('-')[1]
results = defaultdict(list)
sudo_host_list = []
sudo_host_list.append(sudohost)
results['sudohost'].append(sudo_host_list)
for key in sudo_obj.host_aliases:
host_alias_list = []
host_alias_list.append((key, sudo_obj.host_aliases[key]))
results['hostalias'].append(host_alias_list)
for key in sudo_obj.cmnd_aliases:
cmnd_alias_list = []
cmnd_alias_list.append((key, sudo_obj.cmnd_aliases[key]))
results['cmndalias'].append(cmnd_alias_list)
for key in sudo_obj.runas_aliases:
runas_alias_list = []
runas_alias_list.append((key, sudo_obj.runas_aliases[key]))
results['runasalias'].append(runas_alias_list)
for key in sudo_obj.user_aliases:
user_alias_list = []
user_alias_list.append((key, sudo_obj.user_aliases[key]))
results['useralias'].append(user_alias_list)
for rule in sudo_obj.rules:
users_list = []
hosts_list = []
rules_list = []
users_list.append((rule["users"]))
results['users'].append(users_list)
hosts_list.append((rule["hosts"]))
results['hosts'].append(hosts_list)
rules_list.append((rule["users"], rule["hosts"], (rule["commands"])))
results['commands'].append(rules_list)
#print("%s|%s|%s|%s" % (sudohost, ",".join(rule["users"]), ",".join(rule["hosts"]), ",".join(map(str, rule["commands"]))))
cursor = connection.cursor()
qmarks = ",".join('?' * len(results))
qry = "INSERT INTO rules (%s) VALUES (%s)" % (qmarks, qmarks)
qvals = *results.keys(), *results.values()
qvals_stringed = ','.join(map(str, qvals))
print(type(qvals_stringed))
print(qry, qvals_stringed)
cursor.execute(qry, qvals_stringed)
connection.commit()example insert line printout:<class 'str'>
INSERT INTO rules (?,?,?,?) VALUES (?,?,?,?) sudohost,users,hosts,commands,[['aixacodbt']],[[['root']]],[[['ALL']]],[[(['root'], ['ALL'], [{'run_as': ['ALL'], 'tags': None, 'command': 'ALL'}])]]root@nimvie: /home/tremch/scripts # ./sudoers_parse.py
<class 'str'>
INSERT INTO rules (?,?,?,?) VALUES (?,?,?,?) sudohost,users,hosts,commands,[['aixacodbt']],[[['root']]],[[['ALL']]],[[(['root'], ['ALL'], [{'run_as': ['ALL'], 'tags': None, 'command': 'ALL'}])]]
Traceback (most recent call last):
File "./sudoers_parse.py", line 67, in <module>
cursor.execute(qry, qvals_stringed)
File "/opt/freeware/lib/python3.7/site-packages/pymysql/cursors.py", line 161, in execute
query = self.mogrify(query, args)
File "/opt/freeware/lib/python3.7/site-packages/pymysql/cursors.py", line 140, in mogrify
query = query % self._escape_args(args, conn)
TypeError: not all arguments converted during string formattingError:<class 'str'>
INSERT INTO rules (?,?,?,?) VALUES (?,?,?,?) sudohost,users,hosts,commands,[['aixacodbt']],[[['root']]],[[['ALL']]],[[(['root'], ['ALL'], [{'run_as': ['ALL'], 'tags': None, 'command': 'ALL'}])]]
Traceback (most recent call last):
File "./sudoers_parse.py", line 67, in <module>
cursor.execute(qry, qvals_stringed)
File "/opt/freeware/lib/python3.7/site-packages/pymysql/cursors.py", line 161, in execute
query = self.mogrify(query, args)
File "/opt/freeware/lib/python3.7/site-packages/pymysql/cursors.py", line 140, in mogrify
query = query % self._escape_args(args, conn)
TypeError: not all arguments converted during string formattingany tips welcome..wbr
chris
