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

  • Templerschaf
    hat ein Thema erstellt DHCP Datei ändern.

    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?

  • Templerschaf
    antwortet
    Wenn php angeschalten ist und eingetragen ist welche karte das bekommt ja dann ist das was ich da mit Hilfe von anderen zusammengebaut habe schon gut das macht alles was ich brauche. Zumindest steht alles drin.

    deckt es zu 45 % ab

    Hab halt nur noch das prob das ich das vorher ner netzwerkkarte zuweisen muss und noch gut wäre wenn ich da noch n formular feld hätte welches feste pcs mit hineinschreibt.

    Einen Kommentar schreiben:


  • David
    antwortet
    Oh, so meinte ich das nicht
    Mit dhcpd und dhcpd.conf kenne ich mich nicht aus (und will es mir auch nicht angucken)
    Zitat von Templerschaf Beitrag anzeigen
    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');
    Deckt das dem Grunde nach alle Deine Bedürfnisse für eine Netzwerkkarte ab?

    Einen Kommentar schreiben:


  • Templerschaf
    antwortet
    Klar kann ich.

    DHCP

    - service ein und ausschalten

    - es muss auswählbar sein welches Interfacemit der Eingabe angesprochen werden soll.

    - wenn auf statisch umgestellt muss man auch noch ip einstellen können ein formular haben mit welchem man die statische ip zuweisen kann.

    - Noch gut wäre zum DHCP wenn man noch einstellen könnte das bestiommte Rechner eine feste IP zugewiesen bekommen beim DHCP.

    Insgesamt muss der php code mit zwei files arbeiten einmal der

    /etc/default/dhcp -> hier wird reingeschrieben wer dhcp bezieht und wer statisch ( + wenn statisch die ip+subnet usw.)

    /etc/dhcpd.conf -> hier wird reingeschrieben ob pcs feste ips dynamisch bekommen welches Subnetz welche subnetmask usw.

    Einen Kommentar schreiben:


  • David
    antwortet
    Kannst Du die Menge an Parametern, die über das Webinterface änderbar sein sollen, genau eingrenzen?

    Einen Kommentar schreiben:


  • Templerschaf
    antwortet
    Das sollen wirklich nur Leute benutzen die sich damit auskennen. Klar können auch die fehler machen aber ich denke die schaffen das.

    Hmm bräuchte mal wieder einen Rat. Da es ja verschiedene Interfaces gibt sprich mehrere Netzwerkkarten in einem Server/Firewall sind müsst ich das noch mit einbauen das man noch auswählen kann für welche er es schreiben soll. Die oder auch wenn beide oder alle auf dhcp laufen soll muss man sie einmal in der Datei "dhcp" vermerken mit einem einfachen Eintrag und einmal in meiner dhcpd.conf mit den genauen Einträgen wie Adressbereich.

    Letzteres hab ich ja schon. Ich suche jetzt aber eine schöne anwenderfreundlich Lösung wie ich die Interface auswahl noch mit einbau und wie ich es aktivieren lasse. Hat jemand ideen wie man das verwirklichen kann?

    Meine Ideen

    - Für jedes Interface so ein code und Formular bauen.

    - evtl eine checkbox in welcher man das interface seiner wahl ankreuzen kann und dadurch mit if entschieden wird in welche zeile er was hinschreibt und das er auch noch in die andere Datei schreibt.

    Jemand ideen?


    Danke

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Zitat von David Beitrag anzeigen
    Wer darf denn eigntlich das Skript benutzen? Nur jemand, der/die so oder so alles mit der Datei machen dürfte? Wenn nicht, musst Du das noch gegen "unerwünschte" Zeichen absichern, zum Beispiel Zeilenumbrüche.

    Das hab ich auch schonmal angesprochen, aber er sagt die die das nutzen wissen was sie tun...

    Einen Kommentar schreiben:


  • David
    antwortet
    Wer darf denn eigntlich das Skript benutzen? Nur jemand, der/die so oder so alles mit der Datei machen dürfte? Wenn nicht, musst Du das noch gegen "unerwünschte" Zeichen absichern, zum Beispiel Zeilenumbrüche.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    jo so isses

    Einen Kommentar schreiben:


  • Templerschaf
    antwortet
    Versteh ich das richtig...

    if(isset($_POST["name_des_submitbuttonssubmit
    //hier schreibe ich mein ganzes php gesoxx bis zum speicher hin, weil hier ja entscheiden wird das zu schicken falls was drin steht?

    echo
    "Daten gespeichert";
    }
    // hier kommt das Formular hin (ohne else)
    und hier kommt der Rest meiner Datei hin

    Einen Kommentar schreiben:


  • cycap
    antwortet
    An die Stelle wo ich //speichern geschrieben hab sollte auch der Speichervorgang hin... weil genau der ja nur bei abgesendetem Formular ausgeführt werden soll

    Einen Kommentar schreiben:


  • Templerschaf
    antwortet
    PHP-Code:
    <?php
     
      
    if(isset($_POST["submit"]))
     {
      
    // speichern
      
    echo "Daten gespeichert";
     }
      
    //Variablen mit Inhalt aus dem Formular füllen.

      
    $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"];

      
      
    // DHCPD.CONF in ein array speichern um es später zu bearbeiten zu können 
      
    $array file('/etc/dhcpd.conf');

      
    //Überprüfen ob in den Textfeldern was drinsteht oder nicht. steht nichts darin wird es auskommentiert.

    if(trim($subnet) == "")
        {
      
    $array[6] = "#subnet ".$subnet." netmask ".$subnetmask." {\r\n";
        }
        else
        {
      
    $array[6] = "subnet ".$subnet." netmask ".$subnetmask." {\r\n";
        }
      
        
    ///////////////////////////////////////////  
      
    if(trim($start_adress) == "" || trim($end_adress) == "")
        {
      
    $array[9] = "#range ".$start_adress." ".$end_adress.";\r\n";
        }
        else
        {
      
    $array[9] = "range ".$start_adress." ".$end_adress.";\r\n";
        }
        
         
    /////////////////////////////////////////// 
      
    if(trim($subnetmask) == "")
        {
      
    $array[12] = "#option subnet-mask ".$subnetmask.";\r\n";
        }
        else
        {
      
    $array[12] = "option subnet-mask ".$subnetmask.";\r\n";
        }
        
          
    ///////////////////////////////////////////
      
    if(trim($gateway) == "")
        {
      
    $array[24] = "#option routers ".$gateway.";\r\n";
        }
        else
        {
      
    $array[24] = "option routers ".$gateway.";\r\n";
        }
            
    ///////////////////////////////////////////
        
    if(trim($default_lease_time) == "")
        {
      
    $array[18] = "#default-lease-time ".$default_lease_time.";\r\n";
        }
        else
        {
      
    $array[18] = "default-lease-time ".$default_lease_time.";\r\n";
        }
        
    ///////////////////////////////////////////
        
    if(trim($max_lease_time) == "")
        {
       
    $array[21] = "#max-lease-time ".$max_lease_time.";\r\n";
        }
        else
        {
       
    $array[21] = "max-lease-time ".$max_lease_time.";\r\n";
        }
      
         
    ///////////////////////////////////////////
        
    if(trim($domain) == "")
        {
      
    $array[15] = "#option domain-name ".$domain.";\r\n";
        }
        else
        {
      
    $array[15] = "option domain-name ".$domain.";\r\n";
        } 
      
         
    ///////////////////////////////////////////
        
    if(trim($primary_dns) == "" || trim($secondary_dns) == "")
        {
      
    $array[27] = "#option domain-name-servers ".$primary_dns.", ".$secondary_dns.";\r\n";
        }
        else
        {
      
    $array[27] = "option domain-name-servers ".$primary_dns.", ".$secondary_dns.";\r\n";
        } 

      
    // DHCPD.CONF speichern und schließen
      
    file_put_contents('/etc/dhcpd.conf',$array); 

    ?>
    Brauchst du meinen HTML auch?

    Einen Kommentar schreiben:


  • cycap
    antwortet
    dann zeig halt deinen code

    Einen Kommentar schreiben:


  • Templerschaf
    antwortet
    Hmm ja das hab ich auch alles so gemacht... er überschreibt trotzdem immer meine einstellungen der schuft.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    Das reicht völlig:

    <input type="submit" name="submit" value="speichern">

    Einen Kommentar schreiben:

Lädt...
X