system("rcnamed restart"); haut nicht hin

Bash, Shell, PHP, Python, Perl, CGI
moppi
Posts: 368
Joined: 2003-02-15 11:16

system("rcnamed restart"); haut nicht hin

Post by moppi »

Hallo,

leider haut das nicht hin

Code: Select all

<?php

     system("rcnamed restart");

?>
hat jemand einen tip? ich brauche keine rückgabe aus diesem aufruf!
danke.
daniel
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: system("rcnamed restart"); haut nicht hin

Post by gamecrash »

Hab's ja ned ausprobiert, aber mal zwei Ansätze:

- Vollen Pfad zur rcnamed angeben
- Den Befehl in nem su root aufrufen

bzw. alles beide...
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

das script wird von cron als root gestartet.
sh meldet immer fehler.

vollen pfad hatte ich auch schon.

das bekommt dann der postmaster:

Code: Select all

sh: line 1: rcnamed: command not found
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München

Re: system("rcnamed restart"); haut nicht hin

Post by floschi »

Irgendwie kapier ich jetzt nicht, was Shell und PHP da gemeinsam machen sollen...

Ein cronjob, der ein Skript aufruft, benötigt sämtliche Angaben absolut. Probier evtl. mal /etc/init.d/named restart aus, oder wie das bei SuSE heisst ;)
Anonymous

Re: system("rcnamed restart"); haut nicht hin

Post by Anonymous »

Du willst nicht wirklich Aufrufe aus /usr/sbin mit php ausfuehren????

Karlo
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

also das geht so ein script (php) trägt dns definitionen in eine db ein.
alle 15 min soll dann ein cronjob laufen (anderes php) was dann die konfigurationsdateien manipuliert.

anschließend soll dieses script nur wenn nötig den nameserver reloaden.

und das wollte ich mit dem befehl system machen, dies funktioniert jedoch nicht so wie das auf der bash geht.

mfg
daniel
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: system("rcnamed restart"); haut nicht hin

Post by rob »

Wieso soll das nicht gehen?
Ich lasse aus Scripten (najut, Perl, aber egal) auch Named, Apache usw. neu starten.

Gebe immer den vollen Pfad an, dann geht es.
kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: system("rcnamed restart"); haut nicht hin

Post by kase »

Vielleicht ist SafeMode an, oder die Funktion system() gesperrt.
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

<verflucht>leider nicht der safe mode ist aus.</verflucht>
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

Warum kann man von PHP aus diese Scripte nicht aufrufen?
lines
Posts: 55
Joined: 2002-10-05 20:38

Re: system("rcnamed restart"); haut nicht hin

Post by lines »

hi

gib mal ein

Code: Select all

<?

echo sytem('whoami');

?>

dann siehst du wer du bist und was du darfst :)



.lines
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

ja root kommt dabei heraus,
sowie ich das script über den cron starte natürlich ebenfalls als root
sagt es nix mehr.

HILFEEEEE :evil:
arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: system("rcnamed restart"); haut nicht hin

Post by arty »

Du lässt Deinen Apache mit mod_php als root laufen???

Mutig!

bye
arty
d.goersch
Posts: 54
Joined: 2002-06-23 20:31
Location: Viersen

Re: system("rcnamed restart"); haut nicht hin

Post by d.goersch »

Moin,
arty wrote:Du lässt Deinen Apache mit mod_php als root laufen???
lest doch bitte richtig, er führ dieses PHP als Script auf der Shell von Cron aus auf, also klar ist er dort root... lesen dann schreien!

Trotzdem rate ich dir für solche Dinge Perl zu nehmen, PHP ist einfach nicht für die Shell gemacht.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: system("rcnamed restart"); haut nicht hin

Post by captaincrunch »

Trotzdem rate ich dir für solche Dinge Perl zu nehmen, PHP ist einfach nicht für die Shell gemacht.
Oder noch besser die Shell selber ... :wink:
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
spea
Posts: 22
Joined: 2003-02-25 15:32

Re: system("rcnamed restart"); haut nicht hin

Post by spea »

kann es sein dass man den ort des php-interpreters angeben muss, so wie bei perl (#!/usr/bin/perl)...oder bin ich da falsch informiert.

aber warum du dass in php machst versteh ich sowieso nicht, is doch viel einfacher in perl oder halt bash.

so far

Spea
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

Hey das sind ja alles ganz tolle Neuigkeiten,
leider habe ich von Perl nicht den Funken Ahnung noch
habe ich jemals damit gebastelt.

Daher mal folgendes:

Code: Select all

<?php require_once('../../Connections/kr_media.php'); ?>
<?php
# Diese Datei wird über den CRON Daemon aufgerufen alle 15 Minuten
# Sollte das Script feststellen, das in den letzten 15 Minuten
# Eintragungen geupdated oder hinzugefügt worden sind
# wird dies die NS Config neu Schreiben und den NS
# neu starten

$jetzt = time()-(15*60);		// Zeit jetzt - 15 Minuten

mysql_select_db($database_kr_media, $kr_media);
$query_check_neue_eintraege = "SELECT dns_records.id FROM dns_records WHERE dns_records.erstellt > '$jetzt';";
$check_neue_eintraege = mysql_query($query_check_neue_eintraege, $kr_media) or die(mysql_error());
$row_check_neue_eintraege = mysql_fetch_assoc($check_neue_eintraege);
$totalRows_check_neue_eintraege = mysql_num_rows($check_neue_eintraege);


if ($totalRows_check_neue_eintraege > 0) {		// Wenn neue Einträge in den letzten 15 Minuten
	// Alle DNS Records auslesen
	mysql_select_db($database_kr_media, $kr_media);
	$query_lese_alle_dns_records = "SELECT * FROM dns_records";
	$lese_alle_dns_records = mysql_query($query_lese_alle_dns_records, $kr_media) or die(mysql_error());
	$totalRows_lese_alle_dns_records = mysql_num_rows($lese_alle_dns_records);
	
	// Originalkopie der named.conf einlesen um neue Records anzufügen
	$fp = fopen('named.orig', 'r');
	while (!feof($fp)) {
		$named_orig .= fread($fp, 128);
	}
	fclose($fp);
	
	// named.conf neu schreiben anhand der Datenbankeinträge
	$fp = fopen('/etc/named.conf', 'w');
	fputs($fp, $named_orig, strlen($named_orig));	// named.conf neu erstellen
	
	while ($res = mysql_fetch_object($lese_alle_dns_records, MYSQL_ASSOC)) {
		fputs($fp, $res->named_template, strlen($res->named_template));
		$fp2 = fopen ("/var/named/".$res->domain.".".$res->tld.".zone", "w");
		fputs($fp2, $res->zonefile_template, strlen($res->zonefile_template));
		fclose($fp2);
	}
	fclose($fp);
	// Nameserver reloaden nachdem alle Daten geschrieben wurden
	echo "DNS Server wurde modifiziert.<br>";
	echo "Serverausgabe nach Neustart:<br>";
	echo system("/usr/sbin/rcnamed restart");
}
mysql_free_result($check_neue_eintraege);
?>
Kann mir das jemand übersetzen in Perl :lol:

Daniel
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

Verflucht nun sehr euch das mal an:

Code: Select all

p15119052:/ # php -q /home/www/web2/html/de/dns-tools/cron_dns_config.php
Shutting down name server bind9 ..done
Starting name server bind9 ..done
CRON als root bekommt es nicht gebacken auf der bash geht das
ohne probleme wie man sieht.

bittä bittä helfts mir doch einerrrrrr 8O
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: system("rcnamed restart"); haut nicht hin

Post by rob »

1. Wie sieht dein Cronjob aus?
2. Ein Fehler, den man leicht machen kann, aber schwer zu finden ist: mach mal einen Zeilenumbruch hinter den Cronjob (ENTER drücken), wenn das nicht ist, kann Cron den Job nicht lesen.
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

hallo rob,

den cronjob habe ich mit webmin erstellt.
laut /var/log/messages arbeitet der auch ordnungsgemäss.

leider kann php nicht das rcnamed script aufrufen als cronjob
gestartet wie oben geschrieben.

von der shell aus kann ich das aufrufen und es funktioniert nicht.
ich bin am grübeln ob ich mir jetzt perl antun muss?!!?! :roll:
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

da schaust her was der postmaster eben bekommen hat:

Code: Select all

/usr/sbin/rcnamed: line 41: checkproc: command not found
/usr/sbin/rcnamed: line 43: killproc: command not found
..failedShutting down name server bind9 - Warning: named not running ! 
/usr/sbin/rcnamed: line 30: checkproc: command not found
/usr/sbin/rcnamed: line 36: startproc: command not found
..failedStarting name server bind9 
Kann damit jemand was anfangen?
Also offensichtlich ist das er das Script nicht ausführen konnte.
Bisher kam ja nicht mal diese Fehlermeldung.

Gruß
Daniel

ed: den named habe ich ausgeschaltet, um zu sehen ob er startet.
da der eintrag nicht in der /var/log/messages war

ed2: kann man dem named nicht ein 'hup' senden mit php?
rob
Posts: 82
Joined: 2002-06-03 21:53
Location: Brandenburg

Re: system("rcnamed restart"); haut nicht hin

Post by rob »

Die Fehlermeldungen besagen, dass das rcnamed Script etliche Sachen nicht finden kann, also ist irgendwas mit dem PATH falsch, wenn via Cron gestartet wird.

Du kannst dem Named ein HUP schicken:

1.) PID des Prozesses rausbekommen
Dazu liest man die Datei /var/run/named.pid aus.

2.) HUP an diese PID schicken
kill -HUP $PID

fertig.
kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: system("rcnamed restart"); haut nicht hin

Post by kase »

Bash: killall -HUP named

php: system('killall -HUP named')

Bin mir aber nicht sicher, ob der named ein ein HUP reagiert.

Wechsel doch einfach mal bei deinem Cronjob vorher mit cd in das richtige Verzeichnis, vielleicht geht es dann.
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

danke danke
ich denke das ist vielleicht das problem 'follow symlinks' ???

na ja hup werde ich jetzt mal probieren es wäre doch sehr unsauber
den named alle halbe stunde neu zu starten denke ich mal.

also muss das PHP endlich mal tun.

nur wie ist das mit den pfaden wie ihr meint?

was mach ich den falsch?
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: system("rcnamed restart"); haut nicht hin

Post by moppi »

Code: Select all

p15119052:/etc/init.d # killall -HUP named
bringt:

Code: Select all

Mar  4 14:54:49 p15119052 /usr/sbin/named[29578]: loading configuration from '/etc/named.conf'
Mar  4 14:54:49 p15119052 /usr/sbin/named[29578]: no IPv6 interfaces found
so ist das doch schon ok oder?