Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Script funktioniert auf anderem Server nicht

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.06.2012
    Beiträge
    2

    Script funktioniert auf anderem Server nicht

    Hallo zusammen,

    ich bin gerade am lernen von Shell Scripting. Für unsere Nagiosüberwachung habe ich ein Script "geschrieben" das die Alarmierungs SMS entweder über einen SMS Anbieter oder wenn dieser nicht erreichbar ist über einen angeschlossenen UMTS Stick versendet.

    Der externe SMS Versender ist nur über einen Proxy in unserer internen Netzwerk erreichbar.

    Wir haben an unseren Standorten jeweils einen eigenständigen Nagiosserver.
    Da diese in die Jahre gekommen sind, bin ich gerade dabei die neu zu installieren und das Script zu implementieren.

    Auf dem ersten Server habe ich Ubuntu 12.04 in der Server Version installiert. Dort funktioniert alles wunderbar. Er prüft ob der Anbieter bzw. Proxy erreichbar ist und wenn nicht, nimmt er den UMTS Stick.

    Jetzt habe ich einen weiteren Server installiert. Auch mit Ubuntu 12.04 und da funktioniert das Script nicht.
    Im Script sollte eine Umgebungsvariable mit dem entsprechenden Proxy gesetzt werden. Das macht er auf dem zweiten Server nicht.
    Wenn ich testweise den Proxy manuell setzte und das Script dann ausführe bekommt das Script Probleme mit einer URL das im Script enthalten ist.

    Er geht bei der URL nur bis zur Stelle wo das ? kommt.

    Wo mache ich einen Fehler?

    Code:
    #!/bin/bash
    
    ########################
    # SMS versenden von Nagios aus #
    ########################
    
    #Variablen setzten
    datetime="`date '+%Y%m%d%H%M%S'`"
    proxyip=xxx.xxx.xxx.xxx
    count=1
    recipient=$6
    text=$(echo "$1 on $2 is $3 Info is: $4 $5" | sed 's/'%' /'%25' /g' | sed 's/'%.' /'%25' /g')
    smsid_handy="$datetime$recipient$RANDOM"
    
    #Proxy für SMS Versand setzten
    http_proxy=http://$proxyip:port
    
    #MySQL DB Setting
    db_server=localhost
    db_user=user
    db_password=password
    
    #SMS Absender
    sender=004917347110815
    
    proxy_check() {
    #Prüfen ob Proxy erreichbar
    count=$(ping -c $count $proxyip | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
      if [ $count -eq 0 ]; then
        # 100% failed
        echo "Host : $proxyip is down (ping failed) at $(date). SMS wird ueber Handy versendet!"
      return 1
      fi
    return 0
    }
    
    mysql_db(){
    mysql --host=$db_server --user=$db_user --password=$db_password sms <<EOF
    insert into sms_log (timestamp,sender,recipient,text,status,sms_id,error,modem) values('$datetime','$sender','$recipient','$text','$status','$smsid',"'$error'",'mindmatics');
    EOF
    }
    
    
    sms_mindmatics() {
    #SMS versenden ueber Mindmatics und Ausgabe als variable speichern
    ausgabe="$(lynx --dump 'http://smsserver.mindmatics.com/messagegateway/outbound/sms/?version=3.0&cid=xxxx&password=xxxxxp&to='$recipient'&from='$sender'&targetformat=COMMON.1.1&content='"$text"'')"
    
    if echo $ausgabe | grep "access to this resource is not allowed"
    then
    	status=error
    	error="$(echo $ausgabe | cut -c1-)"
    mysql_db
    sms_handy
    return 1
    elif echo $ausgabe | grep error
    then 
    	status="$(echo $ausgabe | cut -c27-31)" 
    	error="$(echo $ausgabe | cut -c33-)"
    mysql_db
    sms_handy
    return 1
    elif echo $ausgabe | grep success
    then 
    	status="$(echo $ausgabe | cut -c27-34)"
    	smsid="$(echo $ausgabe | cut -c35-68)"
    mysql_db
    return 0
    fi
    }
    
    sms_handy() {
    #SMS versenden ueber Handy und Ausgabe als variable speichern
    #/usr/local/bin/sendsms $recipient "$text" 
    echo -e "Id:$smsid_handy\nTo:$recipient\n\n$text" > /var/spool/sms/outgoing/${datetime}_$recipient
    
    mysql --host=$db_server --user=$db_user --password=$db_password sms <<EOF
    insert into sms_log (timestamp,sender,recipient,text,sms_id,modem) values('$datetime','$sender','$recipient','$text','$smsid_handy','Handy');
    EOF
    return 0
    }
    
    #Hauptaufruf
    proxy_check
    if [ $? -ne 1 ]
    then 
    	sms_mindmatics
      else sms_handy 
    fi
    Wie gesagt, ich bin noch am lernen. Es mag sein das das Script nicht das beste ist, aber es funktioniert.

    Gruß
    Yoda

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    Wenn dein Script auf dem einen Server funktioniert, dann musst du wohl eher die Unterschiede der beiden Server ermitteln ... Proxy-Einstellungen ... auch locale würde ich prüfen.
    Die Fehlermeldung verrät wohl keine weiteren Details?
    Viel Erfolg!
    Gruß zst

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.06.2012
    Beiträge
    2
    Guten Morgen,

    das Proxyproblem konnte ich lösen.
    Das Problem, dass mir der Link nach dem ? nicht weiter ausgeführt wird besteht weiterhin.
    Hab es auch mal mit curl probiert und den Link direkt auf der Shell eingegeben. Dort passiert das gleich. Auf dem einen Server gehts auf dem anderen nicht.
    Werde heute noch mal nach Unterschiede für die beiden Systemen suchen.
    Die installierten Pakete habe ich schon gleichgezogen.

    Gruß
    Yoda

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •