Ip Adresse eines embedded Linux über CGI ändern

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von @lienX, 20.07.2006.

  1. #1 @lienX, 20.07.2006
    Zuletzt bearbeitet: 21.07.2006
    @lienX

    @lienX User of the Reset

    Dabei seit:
    20.07.2006
    Beiträge:
    7
    Zustimmungen:
    0
    Hallo,

    ich bastle gerade an einem CGI-Script, das es mir ermöglicht im Browser Netzerksettings vorzunehmen.

    Die Eingaben werden dann mit Hilfe eines CGI-Scripts in eine Datei geschrieben.

    Das Embeddet Linux läd beim nächsten Neustart die Settings aus dieser Datei.

    Mein Problem ist nun dass ich es nicht schaffe den String mit den übergebenen Werten in die einzelnen Werte zu trennen.

    Danke für eure Vorschläge.


    Hier ist die HTML-Datei
    (besser_3.htm)

    Code:
    
    <HTML>
    <HEAD>
    <TITLE>Netzwerkssetup</TITLE>
    </HEAD>
    <BODY>
    <H1>Eingabe der neuen Netzwerkeinstellung</H1>
    
    
    <FORM method="get" action="besser_3_ausw.cgi">
    Geben sie die IP Adresse an:
    <input type="text" name="IPADRESSE">
    Geben sie die Netzmaske an:
    <input type="text" name="NETZMASKE">
    Geben sie den Gateway an:
    <input type="text" name="GATEWAY">
    Geben sie den Hostnamen an:
    <input type="text" name="HOSTNAME">
    Geben sie den Domainamen an:
    <input type="text" name="DOMAINNAME">
    
    
    <br>
    
    <HR>
    <input type="submit" value="Neue Werte übernehmen">
    
    </FORM>
    <HR>
    
    </BODY>
    </HTML>
    
    
    Hier die CGI datei
    (besser_3_ausw.cgi)

    Code:
    
    #!/bin/ash
    echo "Content-type: text/html"
    echo ""
    echo "<HTML>"
    echo "<HEAD>"
    echo "<TITLE>Netzwerkssetup</TITLE>"
    echo "</HEAD>"
    echo "<BODY>"
    echo "<H1>Ausgabe der neuen Netzwerkseinstellungen</H1><br>"
    
    echo "Die neuen Netzwerkseinstellungen sind nun geschrieben.<br>"
    echo "Sie werden erst nach einen neustart des Systems aktiv.<br>"
    echo "Bitte beachten sie, dass sich ihr Computer in dem gleichen Netz befinden muss.<br>"
    echo "Nach Überprüfung der Angaben bitte auf Neustart klicken oder auf zurück um neue einzugebn.<br>"
    
    IPADRESSE=$QUERY_STRING
    
    echo "Ihre lokale zugriffsip ist: ${REMOTE_ADDR} <br>"
    
    
    sed -e s/IPADDR_0=192.168.1.*/IPADDR_0=${IPADRESSE}/g rcS.work > rcS.neu
    echo "Die Ip des Boards ist jetzt: ${IPADRESSE} <br>"
    echo "<A href="./reboot.cgi">Neustart des Boards!</a><br>"
    
    
    echo "</BODY>"
    echo "</HTML>"
    [/CODE]

    Hier wäre noch die Endtextdatei:
    (rcS.work)

    Code:
    
    
    #
    #   Defaults for the boot scripts in /etc/rcS.d
    #
    # Time files in /tmp are kept in days.
    TMPTIME=0
    # Set to yes if you want sulogin to be spawned on bootup
    SULOGIN=no
    # Set to no if you want to be able to login over telnet/rlogin
    # before system startup is complete (as soon as inetd is started)
    DELAYLOGIN=no
    # Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not.
    UTC=no
    # Set VERBOSE to "no" if you would like a more quiet bootup.
    VERBOSE=yes
    # Set EDITMOTD to "no" if you don't want /etc/motd to be editted automatically
    EDITMOTD=yes
    #
    # Contec Defaults
    #
    # Should Hostname be set?
    HOSTNAMESET=yes
    # Hostname
    HOSTNAME=micro9
    # Domain
    DOMAIN=contec-int.at
    # Should Realtime started? 
    REALTIME=yes
    # Should CODESYS application started? 
    CODESYS=yes
    # Should Watchdog started? 
    WDTD=yes
    # Should USVD started? 
    USVD=no
    # Should Mouse start on MW?
    MOUSE=yes
    # Mouse Type?
    MOUSE_TYPE=ps2
    # Mouse Port?
    MOUSE_PORT=/dev/mouse
    # Should DHCPCD started?
    DHCPCD=no
    # Should Network started
    NETWORKSET=yes
    # Network var
    INTERFACE_0=eth0
    IPADDR_0=192.168.1.218
    ETMASK_0=255.255.255.0
    NETWORK_0=192.168.1.0
    BROADCAST_0=192.168.1.255
    GATEWAY_0=192.168.1.2
    # Should Mail started ?
    PLCMAIL=yes
    # Mail-Configuration Server
    MAILSERVER=192.168.1.221
    # Mail-Configuration from mail
    FROMMAIL=test.user@contec.com
    # Should SCREENSAVER started?
    SCREENSAVER=no
    # SCREENSAVER_TIMEOUT?
    SCREENSAVER_TIME=100
    # SCREENSAVER_OFF_TIMEOUT?
    SCREENSAVER_OFF=100
    
    # Is linux unconfigured ?
    UNCONFIGURED=no
    #
    


    Jemand ne idee?
    es geht ja nur noch darum
    IPADRESSE=$QUERY_STRING
    richtig zu zerlegen.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Wie sieht denn $QUERY_STRING in Deinem Fall aus?

    Gruss, Xanti
     
  4. @lienX

    @lienX User of the Reset

    Dabei seit:
    20.07.2006
    Beiträge:
    7
    Zustimmungen:
    0
    string

    er würde ungefär so aussehen:

    Code:
    QUERY_STRING:
    
    IPADRESSE=192.168.1.218&NETZMASKE=255.255.255.0&GATEWAY=192.168.1.2&HOSTNAME=hostest&DOMAINNAME=domaintest
    
    Es ist aber zu beachten das nicht von immer gleichlangen Werten ausgegangen werden kann.
    (Da z.b. die Ip Adresse oder domain andere längen haben können)

    Als Trenner eigenet sich das & meiner Meinung.?
     
  5. #4 Xanti, 21.07.2006
    Zuletzt bearbeitet: 22.07.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hmm, in perl wäre es eleganter, aber trotzdem hier mein Vorschlag:

    Code:
    [~]$ IFS=\&
    [~]$ set $QUERY_STRING
    [~]$ while [ $1 ]; do eval $1; shift; done
    [~]$ unset IFS
    [~]$ echo $NETZMASKE $GATEWAY $HOSTNAME $DOMAINNAME
    255.255.255.0 192.168.1.2 hostest domaintest
    
    Gruss, Xanti

    edit: Kleine Korrektur, da Denkfehler meinerseits.
     
  6. @lienX

    @lienX User of the Reset

    Dabei seit:
    20.07.2006
    Beiträge:
    7
    Zustimmungen:
    0
    Schon Viel Besser!

    Danke das hat mir viel geholfen!
    Hoffe ich kann den Rest jetzt noch selber fertig basteln.

    DANKE :)

    Poste mal die fast fertige cgi.

    Code:
    
    #!/bin/ash
    echo "Content-type: text/html"
    echo ""
    echo "<HTML>"
    echo "<HEAD>"
    echo "<TITLE>Netzwerkssetup</TITLE>"
    echo "</HEAD>"
    echo "<BODY>"
    echo "<H1>Ausgabe der neuen Netzwerkseinstellungen</H1><br>"
    
    echo "Die neuen Netzwerkseinstellungen sind nun geschrieben.<br>"
    echo "Sie werden erst nach einen neustart des Systems aktiv.<br>"
    echo "Nach Überprüfung der Angaben bitte auf Neustart klicken oder auf zurück um neue Werte einzugeben.<br>"
    
    ######IPADRESSE=$QUERY_STRING
    
    
    
    IFS=\&
    set $QUERY_STRING
    while [ $1 ]; do eval $1; shift; done
    unset IFS
    ######echo $IPADRESSE $NETZMASKE $GATEWAY $HOSTNAME $DOMAINNAME
    
    sed -e s/IPADDR_0=.*/IPADDR_0=${IPADRESSE}/g rcS.work > rcS.neu
    sed -e s/ETMASK_0=.*/ETMASK_0=${NETZMASKE}/g rcS.neu > rcS.neu2
    sed -e s/GATEWAY_0=.*/GATEWAY_0=${GATEWAY}/g rcS.neu2 > rcS.neu3
    sed -e s/HOSTNAME=.*/HOSTNAME=${HOSTNAME}/g rcS.neu3 > rcS.neu4
    sed -e s/DOMAIN=.*/DOMAIN=${DOMAINNAME}/g rcS.neu4 > rcS.neu5
    
    echo ""
    
    echo "Die Ip des Boards ist jetzt: ${IPADRESSE} <br>"
    echo "Die Netzwerkmaske des Boards ist jetzt: ${NETZMASKE} <br>"
    echo "Der Gateway des Boards ist jetzt: ${GATEWAY} <br>"
    echo "Der Hostname des Boards ist jetzt: ${HOSTNAME} <br>"
    echo "Die Domain des Boards ist jetzt: ${DOMAINNAME} <br>"
    
    
    echo "Ihre lokale zugriffsip ist: ${REMOTE_ADDR} <br>"
    echo "Beachten sie bitte, das sie sich im gleichen Netz wie das Board aufhalten."
    echo "<A href="./reboot.cgi">Neustart des Boards!</a><br>"
    
    
    echo "</BODY>"
    echo "</HTML>" 
    
    
     
Thema:

Ip Adresse eines embedded Linux über CGI ändern

Die Seite wird geladen...

Ip Adresse eines embedded Linux über CGI ändern - Ähnliche Themen

  1. Exim4 - Faxmaster und andere Emailadressen im lokalen System eines Domänen-PCs

    Exim4 - Faxmaster und andere Emailadressen im lokalen System eines Domänen-PCs: Moin Gemeinde, ich habe viele Debian Systeme in mehreren Domains. Auf allen läuft Exim4 mit eigentlich immer derselben Konfig. Dem System wird...
  2. Teredo/ Miredo Adresse nicht erreichbar

    Teredo/ Miredo Adresse nicht erreichbar: Schönen guten Abend! Folgendes: Ich wohne hier in einem Studentenwohnheim, bei dem die Internetverbindungen aller Wohnungen über einen ganz...
  3. Webserver (über eigene WAN-IP-Adresse) nicht erreichbar - extern möglich

    Webserver (über eigene WAN-IP-Adresse) nicht erreichbar - extern möglich: Hallo zusammen, ich bastel hier gerade an einem Webserver, der über das Internet erreichbar ist. Am DSL-Router hängt jetzt der Webserver an als...
  4. Canonical stellt Adresserweiterung »Fan« für Container vor

    Canonical stellt Adresserweiterung »Fan« für Container vor: Canonical, die Firma hinter Ubuntu, hat ein Werkzeug entwickelt, mit dem sich die Knappheit von IPv4-Adressen bei Containern umgehen lässt. Das...
  5. Kurztipp: Eigene externe IP-Adresse herausfinden

    Kurztipp: Eigene externe IP-Adresse herausfinden: Man kann uPNP nutzen, um am eigenen Router die aktuelle externe IP-Adresse abzufragen. Weiterlesen...