Ws2009ba-i-5.datenbank
Aus Labor für Echtzeitsysteme
(Unterschied zwischen Versionen)
Version vom 14:25, 29. Okt. 2009 (bearbeiten) Stephan S. (Diskussion | Beiträge) ← Zum vorherigen Versionsunterschied |
Version vom 14:34, 29. Okt. 2009 (bearbeiten) (rückgängig) Stephan S. (Diskussion | Beiträge) Zum nächsten Versionsunterschied → |
||
Zeile 8: | Zeile 8: | ||
*DB Hosten | *DB Hosten | ||
*Anleitung zum Connecten!? | *Anleitung zum Connecten!? | ||
+ | *ERD | ||
+ | === Namenskonvention === | ||
===Kür :=== | ===Kür :=== |
Version vom 14:34, 29. Okt. 2009
Inhaltsverzeichnis |
Team log
TODO
- Script: nochmal drüber gucken. entschlacken ?
- Script: Anfaelligkeit gegen falsche Daten optimieren.
- Import: Woher infos Gruppe, Datum, Uhrzeit, Ort, pc_id ?
- Server Accounts
- Foreignkey Constraint für Koordinaten xdrive_id
- DB Hosten
- Anleitung zum Connecten!?
- ERD
Namenskonvention
Kür :
- mac <-> vendor zuordnung: http://standards.ieee.org/regauth/oui/oui.txt http://standards.ieee.org/regauth/oui/
- fertiges Script zum anlegen und fuellen der Tabelle: Bild:Oui.sql.gz
selbst erstellen:
#in bash: cd /tmp #downloaden wget http://standards.ieee.org/regauth/oui/oui.txt #Eintraege filtern cat oui.txt | grep 'base 16' > tmp.txt #insert erstellen ! falsch weil wiki irgendwas ersetzt :/ sed -e 's/'\/'\\/' -e 's/^/INSERT INTO oui VALUES \('\/g' -e 's/ (base 16)\t\t/'\, '\/g' -e 's/$/'\);/g' tmp.txt > insert.sql #in psql: #Tabelle erstellen CREATE TABLE oui ( mac varchar(6) primary key, name varchar(255)); #encoding setzen SET client_encoding to 'latin1'; #inserten... \i insert.sql #encoding zurueck setzen SET client_encoding to 'UTF8';
29.10.2009
Script von Stephan erweitert. Nun werden die Daten in die Sql Datenbank geschrieben. Link
Edit: Vorher muss allerdings das Zusatzmodul pygresql installiert werden!
sudo apt-get install python-pygresql
27.10.2009
Ich habe ein kleines Pythonscript zum parsen des Logfiles geschrieben -> Script Das Script ist noch keinesfalls vollständig!
- liest die Daten aus dem Logfile in eine Liste ein
- Das erstellen der SQL Statements muss noch angepasst werden
- Bisher nur Testweise Dummy- Statements
Wird gestartet mit:
python filter.py <logfile>.ndd
SQL Statements sind dann in der Datei script.sql im selben Ordner wie das Filterscript zu finden.
26.10.2009
- Design der Tabellen, erstellen der create Befehle
- netdetect .ndd Format
- Um die Daten auf den Server zu kopieren haben wir eine Lösung mit winscp überlegt.
- als Server openssh-server. pro Netbook ein Account.
- Dafür wird ein Datenbankserver benötigt (EZS Labor?)
Design der Datenbank
Tabellen:
xdrive_t:
CREATE TABLE xdrive_t ( id SERIAL Primary Key, messung_id int, bssid varchar(12), essid varchar(32), verschluesselung_id int, kanal int, speed int, typ_id int, first_seen int, last_seen int, pc_id int );
messung_t
CREATE TABLE messung_t( id SERIAL Primary Key, datum date, uhrzeit time, ort varchar(255) );
koordinaten_t
CREATE TABLE koordinaten_t ( id SERIAL Primary Key, xdrive_id int, latitude varchar(255), longitude varchar(255), signal_quality int );
verschluesselung_t
CREATE TABLE verschluesselung_t ( id SERIAL Primary Key, name varchar(10) ); INSERT INTO verschluesselung_t VALUES (0, 'OPEN'); INSERT INTO verschluesselung_t VALUES (1, 'WEP?'); INSERT INTO verschluesselung_t VALUES (2, 'WEP'); INSERT INTO verschluesselung_t VALUES (3, 'WPA'); INSERT INTO verschluesselung_t VALUES (4, 'WPA2'); INSERT INTO verschluesselung_t VALUES (5, 'WPA-WPA2');
typ_t
CREATE TABLE typ_t ( id SERIAL Primary Key, name varchar(10) ); INSERT INTO typ_t VALUES (0, 'BSS'); INSERT INTO typ_t VALUES (1, 'IBSS');
constraints
ALTER TABLE xdrive_t ADD CONSTRAINT messung_c FOREIGN KEY(messung_id) REFERENCES messung_t(id); ALTER TABLE xdrive_t ADD CONSTRAINT typ_c FOREIGN KEY (typ_id) REFERENCES typ_t(id); ALTER TABLE xdrive_t ADD CONSTRAINT versch_c FOREIGN KEY (verschluesselung_id) REFERENCES verschluesselung_t(id);
Aufsetzen der Datenbank
SQL Server: PostgreSQL
- sudo apt-get install postgresql
- sudo -u postgres createuser --superuser $USER
- createdb
- psql
PyGreSQL
- sudo apt-get install python-pygresql
- db = DB() braucht evt. login infos als Argument: http://www.pygresql.org/pg.html#connection-objects-pgobject
Skript zum Einpflegen von Daten
- TODO