Schrift
[thread]8607[/thread]

Datei aus DB Einträgen erzeugen

Leser: 1


<< >> 5 Einträge, 1 Seite
kruemmel
 2006-12-26 14:42
#72768 #72768
User since
2006-02-12
33 Artikel
BenutzerIn
[default_avatar]
Hallo,

die Dateien die ich über ein Script erzeugen möchte sind Konfigurationsdateien nach folgendem Muster.

Beispsiel:

Hostname = Host01
IP-Adresse = 192.168.1.1
Subnetzmaske = 255.255.255.0
Netzmaske = 192.168.1.0
usw........


Dabei möchte ich das die Werte für Hostname oder IP-Adresse über ein Web-Formular eingegeben werden, diese Werte dann in eine Datenbank (mysql) gespeichert werden und später aus dem Inhalt der Datenbank eine neue Konfigurationsdatei über ein weiteres Script erzeugt wird. Ich denke mal mein Vrohaben ist in etwa mit webmin zu vergleichen. Die Benutzer können über ien grafisches Frontend (Web-Formular) Programmteile oder Programme Konfigurieren. Bei mir sollen die Daten aber in einer DB gespeichert werden und daraus die neue Konfigurationsdatei erzeugt werden.

Ablauf:

1. Im Webformular die Konfigurationsdaten eingeben
2. Die eingegeben Daten in eine Datenbank speichern
3. Eine Konfigurationsdatei aus den Datenbankinhalten erzeugen


Wisst ihr vielleicht wo es für dieses Szenarion ein identisches Beispiel gibt? Bzw. hat von euch vielleicht einer schon mal dies Example vollzogen und könnte mir anhand einer Beschreibung (Scripte + Ablauf) erklären wie ich am besten vorgehen kann. Ich wäre euch echt sehr dankbar. Im Forum habe ich leider kein Beispiel dazu gefunden.
MisterL
 2006-12-26 17:02
#72769 #72769
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Hallo.

Also grundlegend läuft das Spiel nicht anders als unter http://www.linux-magazin.de/Artikel/ausgabe/2002/08/perl/perl.html & http://www.linux-magazin.de/Artikel/ausgabe/2002/11/perl/perl.html beschrieben.
Ein eigenes Konstrukt kann man z.B. so anlegen:
(DB-Definition MySQL 5):
CREATE TABLE `admin_2` (
`hostname` CHAR( 12 ) NOT NULL ,
`ip` TEXT NULL ,
`subnetmask` TEXT NULL ,
`netmask` TEXT NULL ,
PRIMARY KEY ( `hostname` )
) ENGINE = MYISAM ;

Und eine admin.cgi Datei kann so aussehen:
(Achtung: Code beim INSERT Statement fehlerhaft -> läuft nicht sofort) -> edit: wurde eben geändert
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!C:\perl\bin\perl.exe

use strict;
use DBI;
use CGI;
my $query = new CGI;
print $query->header;
my $cgi = CGI->new();

my $user = 'root';
my $pass = '';
my $db ='admin_2';
my $host = 'localhost';
my $driver = "DBI:mysql:$db:$host";
my $dbh = DBI->connect($driver,$user,$pass) or die $DBI::errstr;
my ($hostname, $ip, $subnetmask, $netmask) = @_;
my $sth = $dbh->do("INSERT INTO admin (`hostname`, `ip`, `subnetmask`, `netmask`) VALUES ('$hostname','$ip','$subnetmask','$netmask')");
print<<"_HTML_";
<html>
<head>
<title>Netzwerk Administration</title>
</head>
<body>
<h1>Administrationsbereich</h1>
<hr size="1">

<form name="admin" method="post" action="admin.cgi">
<h4>Hostname:</h4><input name="hostname" type="text">
<h4>IP:</h4><input name="ip" type="text">
<h4>Subnetzmaske:</h4><input name="subnetmask" type="text">
<h4>Netzmaske:</h4><input name="netmask" type="text">
<input type="reset" value="Abbrechen"> <input type="submit" value="Speichern">

</form>
</body>
</html>
_HTML_
Allerdings fehlt hier noch die Implementierung eines SELECT Statements zum Schreiben in eine Konfigurationsdatei.

Möge dieser Ansatz dennoch nutzen ;-)\n\n

<!--EDIT|MisterL|1167146275-->
“Perl is the only language that looks the same before and after RSA encryption.”
renee
 2006-12-26 18:53
#72770 #72770
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Auch hier wieder die ?-Schreibweise von CPAN:DBI nutzen. Vielleicht hilft dieses PDF weiter...

Außerdem muss man die Formulareingaben parsen... Und warum zwei CGI-Objekte?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!C:\perl\bin\perl.exe

use strict;
use DBI;
use CGI;

my $cgi = CGI->new();
print $cgi->header;
my %params = $cgi->Vars();

my $user = 'root';
my $pass = '';
my $db ='admin_2';
my $host = 'localhost';
my $driver = "DBI:mysql:$db:$host";
my $dbh = DBI->connect($driver,$user,$pass) or die $DBI::errstr;

my $sth = $dbh->do("INSERT INTO admin (`hostname`, `ip`, `subnetmask`, `netmask`) VALUES (?,?,?,?)", undef, @params{qw/hostname,ip,subnetmask,netmask/}) or die $dbh->errstr;

print<<"_HTML_";
<html>
<head>
<title>Netzwerk Administration</title>
</head>
<body>
<h1>Administrationsbereich</h1>
<hr size="1">

<form name="admin" method="post" action="admin.cgi">
<h4>Hostname:</h4><input name="hostname" type="text">
<h4>IP:</h4><input name="ip" type="text">
<h4>Subnetzmaske:</h4><input name="subnetmask" type="text">
<h4>Netzmaske:</h4><input name="netmask" type="text">
<input type="reset" value="Abbrechen"> <input type="submit" value="Speichern">

</form>
</body>
</html>
_HTML_
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
MisterL
 2006-12-26 19:47
#72771 #72771
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
[quote=renee,26.12.2006, 17:53][/quote]
Hallo bei der schweren Geburt.
Quote
Auch hier wieder die ?-Schreibweise von CPAN:DBI nutzen.

Ok, das Gezeigte war eine quick'n'dirty Lösung ohne Anspruch auf Sicherheitsüberprüfung (ja, das soll man sich nicht angewöhnen)... Und in der verlinkten pdf Datei fehlt ein Muster für ein INSERT Statement.
Quote
Und warum zwei CGI-Objekte?

Oops.. Da war der copy'n'paste Teufel unterwegs :-(

Aber dafür scheint der korrigierte Code unter XP+SP2, ActivePerl 5.8.8 & XAMPP in der neusten Version eine Fehlermeldung zu produzieren: "DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',)' at line 1 at admin_rb.cgi line 18.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',)' at line 1 at admin_rb.cgi line 18."
Also direkt bei der INSERT Anweisung...
“Perl is the only language that looks the same before and after RSA encryption.”
renee
 2006-12-26 20:07
#72772 #72772
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aus
Code: (dl )
@params{qw/hostname,ip,subnetmask,netmask/}
muss
Code: (dl )
@params{qw/hostname ip subnetmask netmask/}


werden. Da hätte ein
Code: (dl )
use warnings;
weitergeholfen...

In der PDF ist nicht alles beschrieben (werde ich vielleicht bei Gelegenheit noch erweitern), aber das Grundsätzliche sollte damit klar werden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 5 Einträge, 1 Seite



View all threads created 2006-12-26 14:42.