ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1041
1041
EMPFEHLEN
-
Hallo, folgendes Problem:
Ich habe ein Formular, mit dem ich verschiedene Werte übergebe an eine Datenbank, unter anderem auch den Benutzernamen.
Jetzt möchte ich, das genau dieser Benutzername an ein Script auf der Komandozeile übergeben wird, welches einen Ordner mit dem namen des Benutzers anlegt und welches im gleichen zuge, ein cfg File mit dem Namen des Benutzers für "MRTG" anlegt.
Das Script soll, nachdem es den Namen von php Übergeben bekommen hat natürlich auch gleich noch mit ausgeführt werden
Das Script, an das der Name des Benutzers übergeben werden soll, funktioniert tadellos auf der Komandozeile.
Ich habe bei mir auf dem Server PHP in der Version 4.3.10 laufen.
Ich hoffe ihr könnt mir weiter helfen, Danke.
Gruß s3993
-
18.08.05 22:29 #2
Hallo,
also alles was du schreibst kann man auch machen ohne Zugriff auf die Shell.
Und da haben wir schon unser Zauberwort "Shell" - hat nichts mit Benzin zu tun
Es gibt die Funktion shell_exec() - diese Funktioniert aber nur wenn dein Provider auf dem Server kein "SaveMode" laufen hat.
Aber wie gesagt für dein Vorhaben braucht man kein shell_execIch würde mich über die Bewertung meiner Beiträge mit Kurzkommentar sehr freuen!
Die "dumme Frage" ist gewöhnlich das erste Anzeichen einer völlig neuen Entwicklung!
-------------------
Es ist immer Zeit etwas zu verändern ....
.... das alles so bleibt wie es ist!
-------------------
Homepage Landshut
-------------------
/voodoo.css
#meinFeind {position: absolute; bottom: -6ft;}
-
danke für deine Antwort.
Den Safe Mod habe ich selber ausgeschaltet, da ich einen eigenen Server habe.
Ich habe doch aber shellscripte, die ich ausführe:
ich poste dir mal das Script um das es genau geht.
Es liegt bei mir auf dem server im Verzeichnis /etc/xxxxx
Code :1 2 3 4 5 6 7 8 9 10
#!/bin/sh kunde=test mkdir /srv/www/htdocs/xxx/kunden/$kunde /usr/local/mrtg/bin/cfgmaker --output=/etc/xxx/$kunde.cfg --global "WorkDir: /srv/www/htdocs/xxxx/kunden/$kunde" --global "Language:German" --global "options[_]: growright, bits" --global "XSize[_]:400" --global "YSize[_]:200" --ifdesc=descr public@192.168.0.3 chmod -R 755 *.* /usr/local/mrtg/bin/mrtg /etc/xxx/$kunde.cfg /usr/local/mrtg/bin/indexmaker $kunde.cfg --output=/srv/www/htdocs/xxxx/kunden/$kunde/index1.php -autoprefix chown -R xxx:users /srv/www/htdocs/xxx/kunden/$kunde chmod -R 777 /srv/www/htdocs/xxx/kunden/$kunde
so das ist das Script.
ich möchte nichts weiter als, das ich per php in die Variable $kunde einen Namen reinschreiben kann und es danach ausführen lasse.
Wenn ich im Script der Variablen $kunde einen Namen zuweise, geht alles wunderbar (siehe 2te Zeile im Script).
das script starte ich über die Komandozeile (user:etc/xxx/#./useranlegen.sh)
-
so ich hebe es jetzt hinbekommen, das er mir ein script mit den zugehörigen einträgen generiert:
----------------nutzer.php-----------------
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<?php $name=test; $ip='192.168.0.1'; $code=("#!/bin/sh"); $ordner=("mkdir /srv/www/htdocs/xxx/kunden/$name"); $mrtg_cfg=("/usr/local/mrtg/bin/cfgmaker --output=/etc/xxx/$name.cfg --global \"WorkDir: /srv/www/htdocs/xxx/kunden/$name \" --global \"Language:German\" --global \"options[_]: growright, bits\" --global \"XSize[_]:400\" --global \"YSize[_]:200\" --ifdesc=descr public@$ip"); $recht_1=("chmod -R 755 /etc/xxxt/*.*"); $mrtg_run=("/usr/local/mrtg/bin/mrtg /etc/xxx/$name.cfg"); $indexmaker=("/usr/local/mrtg/bin/indexmaker $name.cfg --output=/srv/www/htdocs/xxx/kunden/$name/index1.php -autoprefix"); $recht_2=("chown -R ddit:users /srv/www/htdocs/xxx/kunden/$name"); $recht_3=("chmod -R 777 /srv/www/htdocs/xx/kunden/$name"); $generatefile = shell_exec("echo '$code' '$ordner' '$mrtg_cfg' '$recht_1' '$mrtg_run' '$indexmaker' '$recht_2' '$recht_3' > nutzeranlegen.sh"); echo "<pre>$generatefile</pre><BR>"; ?>
dasProblem ist, das der alles hintereinander schreibt ohne Zeilenumbruch, das heist, ich kann das script nicht ausführen.
das ganze schaut so aus
------------nutzer.sh-----------------------
Code :1
#!/bin/sh mkdir /srv/www/htdocs/xxx/kunden/test /usr/local/mrtg/bin/cfgmaker --output=/etc/xxx/test.cfg --global "WorkDir: /srv/www/htdocs/xxx/kunden/test " --global "Language:German" --global "options[_]: growright, bits" --global "XSize[_]:400" --global "YSize[_]:200" --ifdesc=descr public@192.168.0.1 chmod -R 755 /etc/xxx/*.* /usr/local/mrtg/bin/mrtg /etc/xxx/test.cfg /usr/local/mrtg/bin/indexmaker test.cfg --output=/srv/www/htdocs/xxx/kunden/test/index1.php -autoprefix chown -R ddit:users /srv/www/htdocs/xxx/kunden/test chmod -R 777 /srv/www/htdocs/xxx/kunden/test
wie bekomme ich jetzt zeilenumbrüche darein?
hat einer eine Idee, wie ich das problem lösen kann?
-
19.08.05 12:09 #5
Hallo,
wenn du das Script über PHP generierst dann mach doch am Ende jeder Zeile ein \n dann hast du dein Zeilenumbruch in deiner Datei.Ich würde mich über die Bewertung meiner Beiträge mit Kurzkommentar sehr freuen!
Die "dumme Frage" ist gewöhnlich das erste Anzeichen einer völlig neuen Entwicklung!
-------------------
Es ist immer Zeit etwas zu verändern ....
.... das alles so bleibt wie es ist!
-------------------
Homepage Landshut
-------------------
/voodoo.css
#meinFeind {position: absolute; bottom: -6ft;}
-
mit dem \n hab ich schon getestet, habe auch \n\r versucht, ging alles nicht, habe es aber jetzt hinbekommen, ich poste mal den quelltext, vieleicht hilft es ja irgendwann mal jemandem weiter.
Danke für deine Hilfe.
Code :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
<?php $name=$username; $ip=$ipadr; $code=("#!/bin/sh"); $ordner=("mkdir /srv/www/htdocs/xxx/kunden/$name"); $mrtg_cfg=("/usr/local/mrtg/bin/cfgmaker --output=/etc/xxx/$name.cfg --global \"WorkDir: /srv/www/htdocs/xxx/kunden/$name \" --global \"Language:German\" --global \"options[_]: growright, bits\" --global \"XSize[_]:400\" --global \"YSize[_]:200\" --ifdesc=descr public@$ip"); $recht_1=("chmod -R 755 /etc/xxx/*.*"); $mrtg_run=("/usr/local/mrtg/bin/mrtg /etc/xxx/$name.cfg"); $indexmaker=("/usr/local/mrtg/bin/indexmaker $name.cfg --output=/srv/www/htdocs/xxx/kunden/$name/index1.php -autoprefix"); $recht_2=("chown -R xxx:users /srv/www/htdocs/xxx/kunden/$name"); $recht_3=("chmod -R 777 /srv/www/htdocs/xxx/kunden/$name"); $generatefile1 = shell_exec("echo '$code' > /etc/xxx/nutzeranlegen.sh"); $generatefile2= shell_exec("echo '$ordner' >> /etc/xxx/nutzeranlegen.sh"); $generatefile3= shell_exec("echo '$mrtg_cfg' >> /etc/xxx/nutzeranlegen.sh"); $generatefile4= shell_exec("echo '$mrtg_run' >> /etc/xxx/nutzeranlegen.sh"); $generatefile5= shell_exec("echo '$inexmaker' >> /etc/xxx/nutzeranlegen.sh"); $generatefile6= shell_exec("echo '$recht_2' >> /etc/xxx/nutzeranlegen.sh"); $generatefile7= shell_exec("echo '$recht_3' >> /etc/xxx/nutzeranlegen.sh"); echo "<pre>$generatefile1</pre>"; echo "<pre>$generatefile2</pre>"; echo "<pre>$generatefile3</pre>"; echo "<pre>$generatefile4</pre>"; echo "<pre>$generatefile5</pre>"; echo "<pre>$generatefile6</pre>"; echo "<pre>$generatefile7</pre>"; $output = shell_exec('chmod 755 /etc/xxx/nutzeranlegen.sh 2>&1'); $output1 = exec('/etc/xxx/nutzeranlegen.sh'); echo "<pre>Statistik wurde erfolgreich erstellt!</pre><BR>"; ?>
Es geht wunderbar, kann per formular die daten übergeben und er legt das script an und führt es auch gleich aus. Perfekt.
Danke noch mal.
Gruß s3993Geändert von s3993 (19.08.05 um 12:33 Uhr)
Ähnliche Themen
-
Variablenwert in ein <input>-Ttag per JS füllen
Von djantirak im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 04.02.10, 16:58 -
Variablenwert in string einfügen
Von hanni6al im Forum C/C++Antworten: 3Letzter Beitrag: 07.12.08, 23:31 -
Variablenwert auf Vorkommastellen beschränken
Von Astror Enales im Forum PHPAntworten: 2Letzter Beitrag: 31.10.06, 11:08 -
SQL und Variablenwert, Problem mit Anführungszeichen
Von penalizer im Forum PHPAntworten: 2Letzter Beitrag: 27.07.06, 15:33 -
Link soll Variablenwert definieren.
Von aherzog im Forum PHPAntworten: 2Letzter Beitrag: 12.09.05, 09:17





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren