Schrift
[thread]8270[/thread]

Script als Dämon starten: Scriptanpassung zu einem Dämon

Leser: 1


<< >> 7 Einträge, 1 Seite
Gast Gast
 2006-08-25 16:00
#69245 #69245
Bitte schlagt mir nicht gleich den Kopf ab wenn ich hier was Frage was anderswo schon beantwortet wurde. Leider besitze ich soviel Perlkenntnisse wie ein leeres Glas Milch.

Ich habe ein kleines Perlscript (nicht von mir), welches eine ganz spezielle DNS-Aufgabe erfüllt. Nun möchte ich es aber irgendwie "sauber" als Daemon starten können. Hat jemand eine Idee wie ich das am einfachsten bewerkstelligen kann? Ich habe mal was gelesen von use Proc::Daemon und Proc::Daemon::Init

Für eure Hilfe bin ich echt Dankbar.

DNS-Code:
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
#!/usr/bin/perl -W
package Net::DNS::Method::Dummy;
use Net::DNS::Method;
use Net::DNS;

our @ISA = qw(Net::DNS::Method);

sub new { bless [], $_[0]; }

sub A {
my $self = shift;
my $q = shift;
my $a = shift;

$a->header->rcode('NOERROR');
$a->push('answer', new Net::DNS::RR $q->qname . ' 10 IN A 1.1.1.1');
return NS_OK;
}

package main;

use Net::DNS;
use Net::DNS::Method;
use Net::DNS::Server;

my $method = Net::DNS::Method::Dummy->new;

my $server = new Net::DNS::Server ('5.5.5.5:53', [ $method ])
or die "Cannot create server object: $!";

while($server->get_question()) {
$server->process;
$server->send_response();
}
Taulmarill
 2006-08-25 16:36
#69246 #69246
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
genau, mit Proc::Daemon kann man ein Perl script als daemon laufen lassen, beschieben ist das (wie auch fast alle anderen perl module) auf dem cpan unter http://search.cpan.org/~ehood/Proc-Daemon-0.03/Daemon.pm
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
esskar
 2006-08-26 02:00
#69247 #69247
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
funzt übrigens prima;
hab damit vorgestern meinen ersten linux daemon gecshrieben.

einfach die zwei zeilen vor das hauptprogramm einfügen und fertig ist die laube!
S@iK
 2006-08-28 18:46
#69248 #69248
User since
2006-08-28
2 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für die Antwort. Wollte schon früher mich melden, hatte jedoch gewisse Probleme mit der Forumsregistration.
Also, wenn ich das richtig verstanden habe, muss der Code nun folgendermassen aussehen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -W
package Net::DNS::Method::Dummy;
package Proc::Daemon::Init;
use Net::DNS::Method;
use Net::DNS;
use Proc::Daemon;

our @ISA = qw(Net::DNS::Method);

sub new { bless [], $_[0]; }

sub A {
my $self = shift;
.
.
.

und das sollte dann beim Aufruf der Datei funktionieren? Sorry, bin wie gesagt ein absoluter Perlnoob.
esskar
 2006-08-28 18:59
#69249 #69249
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
z.b. ja

hab es so gelöst

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package MyDaemon;

# ...

sub run {
my $self = shift;

unless($^O eq 'MSWin32') {
# run as real daemon - but not under windows
require Proc::Daemon;
Proc::Daemon::Init();
}

}

1;
Dubu
 2006-08-29 21:20
#69250 #69250
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=S@iK,28.08.2006, 16:46]
Code: (dl )
1
2
3
4
5
6
#!/usr/bin/perl -W
package Net::DNS::Method::Dummy;
package Proc::Daemon::Init;
use Net::DNS::Method;
use Net::DNS;
use Proc::Daemon;
[/quote]
Proc::Daemon::Init ist eine Funktion des Modules Proc::Daemon und kein Package-Name. Du solltest diese Funktion aufrufen, bevor dein Daemon irgendetwas anderes macht.
S@iK
 2006-08-30 12:43
#69251 #69251
User since
2006-08-28
2 Artikel
BenutzerIn
[default_avatar]
Herzlichen Dank für eure Hilfe. Das Script läuft nun prima als Daemon. Unglaublich was das Einfügen 2er Zeilen bewirken kann. ;)
<< >> 7 Einträge, 1 Seite



View all threads created 2006-08-25 16:00.