| Autor | 
    Nachricht | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 20.07.2006, 09:49 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
             
  
            Anmeldung: 19. Jul 2006 
            Beiträge: 43 
             
            
            
           | 
         
       
     | 
    
      
        
          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>" 
 
 
 
 
 
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
 
#
 
 
 
 
[/quote] | 
         
        
          
          
            
          
             _________________ Meine IP:
 
127.0.0.1
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: RE: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 21.07.2006, 09:47 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
             
  
            Anmeldung: 19. Jul 2006 
            Beiträge: 43 
             
            
            
           | 
         
       
     | 
    
      
        
          Jemand  ne idee?
 
es geht ja nur noch darum
 
IPADRESSE=$QUERY_STRING
 
richtig zu zerlegen. | 
         
        
          
          
            
          
             _________________ Meine IP:
 
127.0.0.1
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: RE: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 21.07.2006, 13:44 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
            
  
            Anmeldung: 09. Jan 2006 
            Beiträge: 1720 
             
            
            
           | 
         
       
     | 
    
      
        
          | schau mal in die sources vom speedport500V. da ist einiges für dich dabei. zu beziehen via t-online/downloads/netcards | 
         
        
          | 
          
            
          
            
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: RE: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 21.07.2006, 14:29 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
             
  
            Anmeldung: 19. Jul 2006 
            Beiträge: 43 
             
            
            
           | 
         
       
     | 
    
      
        
          @schnorrer: der link war kaputt denke ich.
 
Habe mit google jetzt die Sources gefunden.
 
Muss ich mir erst mal anschauen. - Danke | 
         
        
          
          
            
          
             _________________ Meine IP:
 
127.0.0.1
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: RE: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 21.07.2006, 18:30 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
            
  
            Anmeldung: 09. Jan 2006 
            Beiträge: 1720 
             
            
            
           | 
         
       
     | 
    
      
        
          Sorry hab den link versaut. heißt t-online/software/download/netcards.
 
 
Dachte du gehst erst über t-onlie und dann auf der linken Seite die links weiter. Die HP von t-offline ist recht unübersichtlich. | 
         
        
          | 
          
            
          
            
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: RE: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 21.07.2006, 19:52 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
             
  
            Anmeldung: 05. Jul 2006 
            Beiträge: 127 
             
            
            
           | 
         
       
     | 
    
      
        
          weiss nicht ob ich dich da richtig versteh
 
 
#!/usr/bin/perl
 
 
use CGI qw(-no_xhtml :standard :html3);
 
 
übergeben kann man die werte so
 
 
$field[0] = param('IPADRESSE');
 
$field[1] = param('NETZMASKE');
 
 
abfragen z.B
 
 
foreach(@field)
 
  {
 
    if ($_ eq "")
 
    {
 
      &missing_data();
 
    }
 
  }
 
 
kannst du auch alles in ein cgi script schreiben
 
siehe
 
http://stein.cshl.org/~lstein/talks/cgipm/index.htm
 
falls es das nicht wahr
 
sorry | 
         
        
          | 
          
            
          
            
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: RE: Ip Adresse eines embedded Linux über CGI ändern 
             Verfasst am: 21.07.2006, 22:28 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
            
  
            Anmeldung: 09. Jan 2006 
            Beiträge: 1720 
             
            
            
           | 
         
       
     | 
    
      
        
          | Sorry bin kein Programierer, ich wußte nur woher du die Infos bekommst. | 
         
        
          | 
          
            
          
            
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
    | 
      
     | 
    
      
        
					
            Titel: Habs fertig 
             Verfasst am: 24.07.2006, 08:55 Uhr
           | 
				 
       
     | 
  
  
    
      
        
          
             
             
  
            Anmeldung: 19. Jul 2006 
            Beiträge: 43 
             
            
            
           | 
         
       
     | 
    
      
        
          @schnorrer: np danke für die infos & die Seite von T-§%&$%line ist wirklich ne Katastrophe    
 
 
@p500xl: Mein skript kann leider kein Perl verwenden aber der Link ist super für meine nächsten Projekte. Danke    
 
 
Danke an euch!
 
Habe jetzt die Lösung:
 
 
Den String zerteilen:
 
 
Code: 
 
 
IFS=\&
 
set $QUERY_STRING
 
while [ $1 ]; do eval $1; shift; done
 
unset IFS
 
 
 
 
 
 
Das 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
 
 
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>"
 
 
 
 
 | 
         
        
          
          
            
          
             _________________ Meine IP:
 
127.0.0.1
            
           | 
         
         
	        |     | 
	       
       
     | 
  
  
    | 
      
      
     | 
  
  
      | 
  
  
  
    | 
      
     |