Fehler in Shell script

Im Unterforum Hardware, Betriebssysteme, Programmiersprachen - Beschreibung: Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 27 11 2024  22:56:30      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Hardware, Betriebssysteme, Programmiersprachen        Hardware, Betriebssysteme, Programmiersprachen : Alles zu Software, Hardware, Windows, Linux, Programmiersprachen
Anfragen zu Modding, Games, Cracks, etc. unerwünscht.


Autor
Fehler in Shell script

    







BID = 880973

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen
 

  


Hallo,
ich bin's mal wieder. Diesmal hab ich ein Problem in einem Shell Script und finde den Fehler einfach nicht. Ich starre aber auch schon viel zu lange in die selben Codestücke.
Vielleicht kann von euch jemand drüberschauen und eventuell weiterhelfen.

Der Fehler:


Code :


./uniweb.sh: line 77: 1: not found



Zeile 77 ist im Skript folgendes:


Code :


interface_eth_up () {



Ich kann mir den Fehler einfach nicht erklären.

Hier das gesamte Skript (uniweb.sh):


Code :


#!/bin/sh

################################### CONSTANTS ##################################

### Main ###
CHECK_INTERVAL=10

### Check connection function ###
PING_MAXLOSS=50 #maximum loss allowed
PING_COUNT=10 #number of pings
PING_INTERVAL=25 #interval between pings in milliseconds
PING_URL=8.8.8.8 #URL to ping

################################### VARIABLES ##################################

ETH_TYPE="dhcp"
WIRELESS_TYPE="dhcp"

####### RELEVANT DEFAULT VARIABLES FROM /etc/uniweb.conf - TO NOT TOUCH ########

### WAN CONFIGURATION ###
# Ethernet static
ETH_STATIC_IPADDR="192.168.2.5"
ETH_STATIC_NETMASK="255.255.255.0"
ETH_STATIC_GATEWAY="192.168.2.1"
ETH_STATIC_DNS="208.67.222.222 208.67.220.220"
# Ethernet PPPoE
ETH_PPPOE_SERVICE="pppoe"
ETH_PPPOE_USERNAME="testuser"
ETH_PPPOE_PASSWORD="testuser"
ETH_PPPOE_KEEPALIVE="10"
# Wireless Layer 1
WIRELESS_HWMODE="11g"
# Wireless Layer 2
WIRELESS_SSID="ebninet-gamma"
WIRELESS_ENCRYPTION="psk2"
WIRELESS_KEY="moritz2507"
# Wireless static
WIRELESS_IPADDR="192.168.2.15"
WIRELESS_NETMASK="255.255.255.0"
WIRELESS_GATEWAY="192.168.2.1"
WIRELESS_DNS="208.67.222.222 208.67.220.220"
# UMTS
UMTS_PIN="1234"
UMTS_APN="web"
UMTS_USERNAME="web@telering.at"
UMTS_PASSWORD="web"


################################## FUNCTIONS ###################################

### check connection ###
check () {

PING_OUTPUT=`fping -q -c $PING_COUNT -p $PING_INTERVAL $PING_URL 2>&1`

#extract sent packet number (is zero at problems (net unreachale, ...))
PING_PACKETS_VAR1=`echo "$PING_OUTPUT" | egrep -o "xmt/rcv/%loss = [0-9]{1,2}/"`
PING_PACKETS_VAR2=`echo "$PING_PACKETS_VAR1" | egrep -o "[0-9]{1,2}"`

if [ "$PING_PACKETS_VAR2" -ne "$PING_COUNT" ] ; then
return 1
fi

#extract packet loss
PING_VAR1=`echo "$PING_OUTPUT" | egrep -o "/[0-9]]{1,3}%"`
PING_VAR2=`echo "$PING_VAR1" | egrep -o "[0-9]{1,3}"`

if [ $PING_VAR2 -le $PING_MAXLOSS ] ; then
return 0
else
return 1
fi
}

### interface ETH ###
interface_eth_up () {
if [ "$ETH_TYPE" == "static" ] ; then

uci delete network.eth.service > /dev/null 2>&1
uci delete network.eth.username > /dev/null 2>&1
uci delete network.eth.password > /dev/null 2>&1
uci delete network.eth.keepalive > /dev/null 2>&1

uci set network.eth.proto="static"

uci set network.eth.ipaddr="$ETH_STATIC_IPADDR"
uci set network.eth.netmask="$ETH_STATIC_NETMASK"
uci set network.eth.gateway="$ETH_STATIC_GATEWAY"
uci set network.eth.dns="$ETH_STATIC_DNS"

uci commit
ifconfig eth0 up

sleep 1

elif [ "$ETH_TYPE" == "pppoe" ] ; then

uci delete network.eth.ipaddr > /dev/null 2>&1
uci delete network.eth.netmask > /dev/null 2>&1
uci delete network.eth.gateway > /dev/null 2>&1
uci delete network.eth.dns > /dev/null 2>&1

uci set network.eth.proto="pppoe"

uci set network.eth.service="$ETH_PPPOE_SERVICE"
uci set network.eth.username="$ETH_PPPOE_USERNAME"
uci set network.eth.password="$ETH_PPPOE_PASSWORD"
uci set network.eth.keepalive="$ETH_PPPOE_KEEPALIVE"

uci commit
ifconfig eth0 up

sleep 15

else #dhcp

uci delete network.eth.ipaddr > /dev/null 2>&1
uci delete network.eth.netmask > /dev/null 2>&1
uci delete network.eth.gateway > /dev/null 2>&1
uci delete network.eth.dns > /dev/null 2>&1

uci delete network.eth.service > /dev/null 2>&1
uci delete network.eth.username > /dev/null 2>&1
uci delete network.eth.password > /dev/null 2>&1
uci delete network.eth.keepalive > /dev/null 2>&1

uci set network.eth.proto="dhcp"

uci commit
ifconfig eth0 up

sleep 7

fi
}

interface_eth_down () {
ifconfig eth0 down
}

### interface WIRELESS ###
interface_wireless_up () {

uci set wireless.radio0.hwmode="$WIRELESS_HWMODE"
uci set     wireless. äht wifi-iface[0].ssid="$WIRELESS_SSID" (automatisch editiert wegen spamgefahr)   
uci set     wireless. äht wifi-iface[0].encryption="$WIRELESS_ENCRYPTION" (automatisch editiert wegen spamgefahr)   
uci set     wireless. äht wifi-iface[0].key="$WIRELESS_KEY" (automatisch editiert wegen spamgefahr)   

if [ "$ETH_TYPE" == "static" ] ; then

uci set network.wireless.proto="static"

uci set network.wireless.ipaddr="$ETH_STATIC_IPADDR"
uci set network.wireless.netmask="$ETH_STATIC_NETMASK"
uci set network.wireless.gateway="$ETH_STATIC_GATEWAY"
uci set network.wireless.dns="$ETH_STATIC_DNS"

uci commit
wifi up radio0

sleep 5

else #dhcp

uci delete network.wireless.ipaddr > /dev/null 2>&1
uci delete network.wireless.netmask > /dev/null 2>&1
uci delete network.wireless.gateway > /dev/null 2>&1
uci delete network.wireless.dns > /dev/null 2>&1

uci set network.wireless.proto="dhcp"

uci commit
wifi up radio0

sleep 15

fi
}

interface_wireless_down () {
wifi down radio0
}

### interface UMTS ###
interface_umts_up () {
ifup umts

sleep 10
}

interface_umts_down () {
ifdown umts
}


################################### UNIWEB #####################################

### init ###
# copy the config file into /tmp for use (To decrease writing cycles to flash
# done by the web interface and use temporary file instead. The web interface
# can write to the /etc/uniweb.conf by using a special function)
cp /etc/uniweb.conf /tmp/uniweb.conf

# bring down all interfaces
interface_eth_down
interface_wireless_down
interface_umts_down
sleep 5

### main ###
# main loop
while [ true ] ; do

source /tmp/uniweb.conf

check
CONNECTED="$?"

if [ "$CONNECTED" -eq "0" ] ; then
echo "connection good"
sleep $CHECK_INTERVAL
else
#bring down all interfaces
interface_eth_down
interface_wireless_down
interface_umts_down

#interface eth static
if $ETH_STATIC ; then
echo "--> ETH STATIC try:"
ETH_TYPE="static"
interface_eth_up
check
CONNECTED="$?"
if $CONNECTED ; then
echo "connected"
continue
fi
interface_eth_down
fi

#interface eth dhcp
if $ETH_DHCP ; then
echo "--> ETH DHCP try:"
ETH_TYPE="dhcp"
interface_eth_up
check
CONNECTED="$?"
if $CONNECTED ; then
echo "connected"
continue
fi
interface_eth_down
fi

#interface eth pppoe
if $ETH_PPPOE ; then
echo "--> ETH PPPOE try:"
ETH_TYPE="pppoe"
interface_eth_up
check
CONNECTED="$?"
if $CONNECTED ; then
echo "connected"
continue
fi
interface_eth_down
fi

#interface wireless static
if $WIRELESS_STATIC ; then
echo "--> WIRELESS STATIC try:"
WIRELESS_TYPE="static"
interface_wireless_up
check
CONNECTED="$?"
if $CONNECTED ; then
echo "connected"
continue
fi
interface_wireless_down
fi

#interface wireless dhcp
if $WIRELESS_DHCP ; then
echo "--> WIRELESS DHCP try:"
WIRELESS_TYPE="dhcp"
interface_wireless_up
check
CONNECTED="$?"
if $CONNECTED ; then
echo "connected"
continue
fi
interface_wireless_down
fi

#interface umts
if $UMTS ; then
echo "--> UMTS try:"
interface_umts_up
check
CONNECTED="$?"
if $CONNECTED ; then
echo "connected"
continue
fi
interface_umts_down
fi

fi

done



Vielen Dank im Voraus.

Simon

_________________
Simon
IW3BWH

BID = 881947

clembra

Inventar



Beiträge: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

 

  

Hallo wulf,
in der Zeile kann ich auch keinen Fehler feststellen, es seid denn, der Funktionsname ist bereits bekannt. Das könnte eine bereits früher deklarierte Funktion oder auch ein Programm im PATH mit dem Namen sein.

Ansonsten ein Hinweis zur nächsten Zeile, test, wofür die eckigen Klammern eine Abkürzung sind, verwendet für Stringvergleiche nur ein einfaches Gleich-Zeichen. Je nach Shell und test-Version funktionieren zwar auch doppelte, sicherer ist es aber mit nur einem.

_________________
Reboot oder be root, das ist hier die Frage.

BID = 882645

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen

Hallo,

es war tatsächlich ein Hardlink auf ein Programm im Path. Vielen Dank für die zündende Idee. Das Programm läuft jetzt (nachdem ich die ganzen Anderen Fehler korrigiert habe).


_________________
Simon
IW3BWH


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 12 Beiträge verfasst
© x sparkkelsputz        Besucher : 182415342   Heute : 7328    Gestern : 7797    Online : 369        27.11.2024    22:56
3 Besucher in den letzten 60 Sekunden        alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0270230770111