Я написал этот фрагмент кода, пытаясь импортировать мои данные nmap csv в базу данных sqlite, но у меня возникают ошибки при попытке запустить его из терминала.
Traceback (most recent call last):
File "fourth.py", line 16, in <module>
to_db = [(i['host'],i['hostname'],i['hostname_type '],i['protocol'],i['port'],i['name'],i['state'],i['product'],i['extrainfo'],i['reason'],i['version'],i['conf'],i['cpe'])for i in dr]
File "fourth.py", line 16, in <listcomp>
to_db = [(i['host'],i['hostname'],i['hostname_type '],i['protocol'],i['port'],i['name'],i['state'],i['product'],i['extrainfo'],i['reason'],i['version'],i['conf'],i['cpe'])for i in dr]
KeyError: 'host'
мой CSV
host;hostname;hostname_type;protocol;port;name;state;product;extrainfo;reason;version;conf;cpe
8.8.8.8;google-public-dns-a.google.com;PTR;tcp;22;ssh;filtered;;;no-response;;3;
мой код
#!/usr/bin/#!/usr/bin/env python3
import sqlite3
import csv
conn = sqlite3.connect('nmapscan.db')
cur = conn.cursor()
conn.executescript("DROP TABLE IF EXISTS scanned; CREATE TABLE scanned (host,hostname,hostname_type,protocol,port,name,state,product,extrainfo,reason,version,conf,cpe);" )
with open ('nmapscan.csv', 'r') as fin:
dr = csv.DictReader(fin)
to_db = [(i['host'],i['hostname'],i['hostname_type '],i['protocol'],i['port'],i['name'],i['state'],i['product'],i['extrainfo'],i['reason'],i['version'],i['conf'],i['cpe'])for i in dr]
cur.executemany("INSERT INTO scanned (host,hostname,hostname_type,protocol,port,name,state,product,extrainfo,reason,version,conf,cpe) values (?,?,?,?,?,?,?,?,?,?,?,?,?));", to_db)
conn.commit()
conn.close()
код сканирования nmap
csvFilePath = "nmapscan.csv"
ipAddress = first.ipAddress
port = first.port
nm = nmap.PortScanner()
nm.scan(ipAddress,port)
csv = nm.csv()
print(csv)
#writing to csv file
with open(csvFilePath, "w") as csvFile:
csvFile.write(csv)
Я хочу добавить данные csv в таблицу базы данных, в которой все.