Ws2009ba-i-5.datenbank

Aus Labor für Echtzeitsysteme

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Version vom 15:19, 4. Nov. 2009 (bearbeiten)
Stephan S. (Diskussion | Beiträge)

← Zum vorherigen Versionsunterschied
Version vom 08:14, 5. Nov. 2009 (bearbeiten) (rückgängig)
David (Diskussion | Beiträge)

Zum nächsten Versionsunterschied →
Zeile 44: Zeile 44:
Hier eine Kurzanleitung zu WinSCP -> [http://qbesmine.de/stuff/winscp_kurzanleitung.pdf WinSCP_Kurzanleitung] Hier eine Kurzanleitung zu WinSCP -> [http://qbesmine.de/stuff/winscp_kurzanleitung.pdf WinSCP_Kurzanleitung]
-=== 2.11.2009 Vorschlag Usermanagement ===+== 5.11.2009 ==
 +*ssh chroot
 +*user erstellen
 + 
 +== 2.11.2009 Vorschlag Usermanagement ==
*Server User werden im Homeverzeichnis eingesperrt. *Server User werden im Homeverzeichnis eingesperrt.
Zeile 56: Zeile 60:
<kr/mg>_<Straßenname ohne Sonderzeichen>_<messungsnr> <kr/mg>_<Straßenname ohne Sonderzeichen>_<messungsnr>
Gruppe (SSH User) -> 1 User pro Netbook mit Netbookname als loginname Gruppe (SSH User) -> 1 User pro Netbook mit Netbookname als loginname
- 
-===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'; 
==30.10.2009== ==30.10.2009==
Zeile 188: Zeile 164:
==Skript zum Einpflegen von Daten== ==Skript zum Einpflegen von Daten==
*TODO *TODO
 +
 +===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';

Version vom 08:14, 5. Nov. 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 ?
    • Gruppe, Datum, Uhrzeit, Ort, pc_id -> messungs_id, ssh_login, timestamp
  • Server Accounts
  • Foreignkey Constraint für Koordinaten xdrive_id
  • DB Hosten
  • Anleitung zum Connecten!? Stephan
  • ERD
  • Straßennamen einpflegen
  • Präsipunkte
    • Idee: Pro Netbook ein Useraccount auf dem Server (Netbookname) -> ein Useraccount in der Datenbank
    • Tabellen Inhalt Beispiele.
    • ERD
    • Winscp
    • parsen von Netdetectlogfile in die Datenbank
    • phppgadmin:
  • testuser erstellen und ssh_chroot david

Offene Fragen an die Gladbacher Gruppe

  • Wird ein Messplan mit Messungsnummern erstellt?

Präsentation der Datenbank

  • Datenbankserver
    • Ubuntu Linux
    • Postgresql
    • Script zum Parsen der Ndetectlogfiles
    • Namenskonvention
      • <kr/mg>_<Straßenname ohne Sonderzeichen>_<messungsnr>
  • User Accounts
    • Pro Netbook ein Useraccount auf dem Server (Netbookname)
    • Ein Useraccount in der Datenbank
  • ERD
    • Bild:Xdrive.jpeg
  • phppgadmin
    • Bild:Phppgadmin.jpeg
  • Serverzugang über WinSCP
    • Bild:winscp_connect.png
    • Bild:Winscp_copied.PNG

WinSCP Kurzanleitung

Hier eine Kurzanleitung zu WinSCP -> WinSCP_Kurzanleitung

5.11.2009

  • ssh chroot
  • user erstellen

2.11.2009 Vorschlag Usermanagement

  • Server User werden im Homeverzeichnis eingesperrt.
    • Konfigurationsmöglichkeit in ssh.conf?
  • DBUser bekommen sämtliche rechte entzogen
REVOKE ALL PRIVILEGES ON DATABASE xdrive_tmp FROM xdrive_test;
  • DBUser bekommen nur leserechte auf bestimmte Tabellen (Views)
GRANT SELECT ON xdrive_t to xdrive_test;

Namenskonvention für Netdetectlogfiles

<kr/mg>_<Straßenname ohne Sonderzeichen>_<messungsnr> Gruppe (SSH User) -> 1 User pro Netbook mit Netbookname als loginname

30.10.2009

  • Server mit Postgres und phppgadmin installiert und konfiguriert.
    • jeder der einen Datenbank Account braucht bitte bei Stephan/David melden.
  • erster Test mit unseren Script erfolgreich. Daten stehen in der xdrive_tmp Datenbank.

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

messung_t

CREATE TABLE messung_t(
    id SERIAL Primary Key,
    datum date,
    uhrzeit time,
    ort varchar(255),
    strasse varchar(255),
    pc_id int
    );

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

Skript zum Einpflegen von Daten

  • TODO

Kür :

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';
Persönliche Werkzeuge