Ankündigung

Einklappen
Keine Ankündigung bisher.

DHCP Datei ändern

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DHCP Datei ändern

    Hallo,

    ich suche ein script, welches bestimmte Zeilen in einem File ändert.
    Ich habe mit PHP und HTML ein Webinterface gemacht um auf linux den DHCP-Service per Oberfläche verwalten zu können. Nun habe ich ein Formular und jetzt will ich das die Daten die in dieses Formular geschrieben werden in mein dhcpd.conf file geschrieben werden. Aber dieses file sollte nicht direkt neu geschrieben werden sondern nur bestimmte Zeilen editiert werden. Ist das möglich? Hat jemand die güte mir das mal zu zeigen bzw. das zu programmieren?


  • #2
    Ist mit den File- und Stringfunktionen doch gar kein Problem.

    Du benutzt file() und hast damit schonmal jede Zeile einzeln in einem Array. Die Zeilen kannst du dann nochmal wie gewünscht auseinanderbasteln (mit den Stringfunktionen) und ggf. die Stelle ändern. Dann schreibst du das ganze wieder in die Datei rein und fertig.

    Kommentar


    • #3
      Könntest du mir vll ein einfaches beispiel zeigen ?
      Ich bin noch ziemlich neu und bräuchte mal ein kleines Beispiel. Nur ganz klein nix großes. Ist das möglich?
      So ein zwei oder dreizeiler? Wäre subba

      Tut mir leid wegen dem anderem Threat hab ihn schon geschlossen! Hab ich vor deiner Antwort schon aufgemacht gehabt. Sorry für das schlechte benehmen!

      Kommentar


      • #4
        Ich brauch dir kein Beispiel schreiben wenn in der PHP-Doku eins steht:

        PHP: file - Manual

        Ich weiss nicht wie die DHCP-Datei aufgebaut ist, aber Funktionen wie substr() oder strpos() oder explode() können dir sicher hilfreich sein. Dazu findest du in der PHP-Doku auch Beispiele

        Kommentar


        • #5
          Meine dhcpd.conf sieht so aus

          Code:
          #######################
          ### etc/dhcpd.conf ####
          #######################
          
          
          # Für die Netzwerkkarte eth0 (LAN) gelten folgende Einstellungen
          
          subnet 192.168.0.0 netmask 255.255.255.0 {
          
            # dynamische Zuweisung bei fremden Rechnern im LAN
            range 192.168.0.100 192.168.0.200;
          
            # Netzmaske
            option subnet-mask 255.255.255.0;
          
            # Domainname = firewall.lan
            option domain-name "firewalllan";
          
            # Minimale Ausleihzeit in Sekunden
            default-lease-time 600;
          
            # Maximale Ausleihzeit in Sekunden
            max-lease-time 7200;
            
            # Internet-Gateway
            option routers 192.168.0.1;
          
            # zwei DNS-Server
            #option domain-name-servers xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx;
          
          }
          Wobei ich eigentlich alles editieren muss was kein # Zeichen davor hat.
          Ist es einfacher mit PHP das komplett neu schreiben zu lassen oder sollte man es doch editieren?

          Kommentar


          • #6
            Bei einer so kleinen Datei ist es wahrscheinlich wirklich einfacher die Datei komplett neu zu schreiben, was aber mit dem auslesen der Werte nichts zu tun hat

            Kommentar


            • #7


              Und mit welchem Befehl kann ich z.B ein Wort aus einer Variablen mit einem Satz bereichern?

              Also wenn ich sage in meiner Varibalen steht schule. Wie Befehle ich php dann das es in ein File schreibt ICH LIEBE schule SEHR. Wie bring ich php dazu diese drei wörter hinzuzufügen?




              Danke für deine Nerven...


              Ps: Wenn ich dich nerve kennst du n turtorial wo meine Wünsche ziemlich gut behandelt werden?

              Kommentar


              • #8
                Deine Fragte ist jetzt also wie man Strings verknüpft? Na nichts leichter als das:

                PHP-Code:
                $text "Schule";

                $gesamt "ICH LIEBE ".$text." SEHR"

                Kommentar


                • #9
                  Okay...

                  Code:
                  <?php
                  
                    $subnet = $_POST["subnet"];
                    $start_adress = $_POST["start_adress"];
                    $end_adress = $_POST["end_adress"];
                    $subnetmask = $_POST["subnetmask"];
                    $gateway = $_POST["gateway"];
                    $default_lease_time = $_POST["default_lease_time"];
                    $max_lease_time = $_POST["max_lease_time"];
                    $domain = $_POST["domain"];
                    $primary_dns = $_POST["primary_dns"];
                    $secondary_dns = $_POST["secondary_dns"];
                  
                  
                    $array = file('/etc/dhcpd.conf');
                  
                  
                  ?>
                  Ich hab jetzt was in meinen Variablen stehn. Ich hab meine httpd.conf eingelesen... Und wie sag ich jetzt dem Herrn PHP pass auf schreibe was in der variablen steht in die Zeile 8 bzw. ersetze was in Zeile 8 steht mit dem was in meiner variablen steht?

                  Kommentar


                  • #10
                    PHP-Code:
                    $array[8] = "subnet ".$subnet." netmask ".$subnetmask." {";
                    file_put_contents('/etc/dhcpd.conf',implode($array)); 
                    klar soweit?

                    [edit]
                    muss wohl $array[7] sein, weil Zeile 1 dem Array-Eintrag 0 zugewiesen wird. Außerdem kann es sein das file() die Zeilenumbrüche nicht mit übernimmt, das heisst du müsstest implode("\n",$array) machen, aber da bin ich mir nicht sicher

                    Kommentar


                    • #11
                      Kuhl... das habe ich sogar verstanden! =)

                      Was ich nciht verstehe is das implode... aber da werde ich mich gleich mal im internet schlau machen.
                      GEhts nocht weiter? Weil du geschriebn hast klar soweit oder war das alles? Aber is ja wirklich nciht so schwer... Naja aber aller anfang ist schwer...

                      Kommentar


                      • #12
                        implode setzt alle Zeilen wieder aneinander, macht also aus nem Array wieder einen String

                        [edit]
                        hab grade gesehen du brauchst das implode gar nicht, weil file_put_contents das auch automatisch kann

                        Kommentar


                        • #13
                          Okay stimmt das hier so?

                          Ach ja noch zwei Fragen.

                          Wass mache ich wenn zwischen $start_adress." und $end_adress." ein leerzeichen oder ein ; und ein Leerzeichen stehn muss? kann ich da einfach in die gänsefüsschen ein leerezeichen mit der space taste machen?



                          PHP-Code:
                          <?php

                            $subnet 
                          $_POST["subnet"];
                            
                          $start_adress $_POST["start_adress"];
                            
                          $end_adress $_POST["end_adress"];
                            
                          $subnetmask $_POST["subnetmask"];
                            
                          $gateway $_POST["gateway"];
                            
                          $default_lease_time $_POST["default_lease_time"];
                            
                          $max_lease_time $_POST["max_lease_time"];
                            
                          $domain $_POST["domain"];
                            
                          $primary_dns $_POST["primary_dns"];
                            
                          $secondary_dns $_POST["secondary_dns"];


                            
                          $array file('/etc/dhcpd.conf');

                            
                          // 7 deswegen weil Zeile eins als Zeile null gelesen wird
                            
                          $array[7] = "subnet ".$subnet." netmask ".$subnetmask." {";
                            
                          $array[10] = "range ".$start_adress." LEERZEICEHN? ".$end_adress." {";
                            
                          $array[13] = "option subnet-mask ".$subnetmask." {";
                            
                          $array[16] = "option domain-name ".$domain." {";
                            
                          $array[19] = "default-lease-time ".$default_lease_time." {";
                            
                          $array[22] = "max-lease-time ".$max_lease_time." {";
                            
                          $array[25] = "option routers ".$gateway." {";
                           
                          $array[28] = "option domain-name-servers ".$primary_dns."; LEERZEICEHN? ".$secondary_dns." {";
                            
                            
                          file_put_contents('/etc/dhcpd.conf'); 




                          ?>

                          Kommentar


                          • #14
                            Zitat von Templerschaf Beitrag anzeigen
                            Okay stimmt das hier so?

                            Ach ja noch zwei Fragen.

                            Wass mache ich wenn zwischen $start_adress." und $end_adress." ein leerzeichen oder ein ; und ein Leerzeichen stehn muss? kann ich da einfach in die gänsefüsschen ein leerezeichen mit der space taste machen?

                            Klar, ein $var1." ".$var2 geht genau so wie ein $var1."; ".$var2 oder sonstige Kombinationen.

                            Warum du überall am Ende ein ." {"; gemacht hast ist mir schleierhaft, aber sonst siehts gut aus. Kannst dir ja die Ergebnisdatei anschauen. Übrigens solltest du daran denken das Formulardaten nicht stimmen müssen oder sogar schädlichen Code enthalten können, sowas solltest du prüfen, aber das ist ein anderes Thema.

                            Kommentar


                            • #15
                              Was ich noch ganz vergessen habe dich zu fragen was passiert wenn in einer variablen nichts steht gibt er mir dann eine fehlermeldung aus oder ersetzt er das wort in der zeile z.B. zeile 6 mit nem leeren eintrag oder was macht er dann?

                              Noch was was bewirkt das denn " {" " ? Ich hab das gemacht weil du es getan hast. =)

                              zum Thema Sicherheit. für die die das benutzen die wissen was sie da machen. =)

                              Aber danke erstmal für die tolle und schnelle hilfe.

                              ---> Habe eine Fehlermeldung bekommen


                              Warning: file_put_contents() expects at least 2 parameters, 1 given in /var/www/vpn/dhcp.php on line 27

                              Kommentar

                              Lädt...
                              X