tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1041
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    s3993 s3993 ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    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
     

  2. #2
    Avatar von dwex
    dwex dwex ist offline Mitglied Platin
    Registriert seit
    Apr 2005
    Ort
    Landshut (Niederbayern)
    Beiträge
    695
    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_exec
     
    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;}

  3. #3
    s3993 s3993 ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    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)
     

  4. #4
    s3993 s3993 ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    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?
     

  5. #5
    Avatar von dwex
    dwex dwex ist offline Mitglied Platin
    Registriert seit
    Apr 2005
    Ort
    Landshut (Niederbayern)
    Beiträge
    695
    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;}

  6. #6
    s3993 s3993 ist offline Mitglied
    Registriert seit
    Mar 2005
    Beiträge
    13
    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ß s3993
    Geändert von s3993 (19.08.05 um 12:33 Uhr)
     

Ähnliche Themen

  1. Variablenwert in ein <input>-Ttag per JS füllen
    Von djantirak im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 04.02.10, 16:58
  2. Variablenwert in string einfügen
    Von hanni6al im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 07.12.08, 23:31
  3. Variablenwert auf Vorkommastellen beschränken
    Von Astror Enales im Forum PHP
    Antworten: 2
    Letzter Beitrag: 31.10.06, 11:08
  4. Antworten: 2
    Letzter Beitrag: 27.07.06, 15:33
  5. Link soll Variablenwert definieren.
    Von aherzog im Forum PHP
    Antworten: 2
    Letzter Beitrag: 12.09.05, 09:17