Bash-Script / Meldungen unterdrücken

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MarcM
Beiträge: 379
Registriert: 19.06.2004 16:28:22
Wohnort: Kassel

Bash-Script / Meldungen unterdrücken

Beitrag von MarcM » 17.10.2004 12:55:28

Hi,

ich hab mir ein Script geschrieben welches mit Hilfe von ifplugd (ifplugstatus) beim booten dynamisch mein Netzwerk einrichtet.

Steckt das Lankabel hat das aus Geschwindigkeitsgründen vorrang, steckt das nicht, prüfe ich per lspci ob die PCMCIA WLAN Karte steckt und richte dann für die das Netzwerk ein....

später will ich noch mit dem ifplugd(.action) dem Kabel vorrang geben wenn man es im laufenden Betrieb reinsteckt. Wird wohl kein Problem werden denk ich.....

Soweit so gut. Was mich stört sind allerdings die Meldungen die mein WLAN Kernel-Modul und der dhclient von sich geben. Kann ich die irgendwie unterdrücken ? mit umbiegen nach /dev/null hilft nicht, es wird trotzdem ausgegeben....

Hier mal das Script :

Code: Alles auswählen

#!/bin/sh
#
# $Id: chk_network.init.d,v 1.0 2004/10/16 
#

case "$1" in
	start)
		echo -n "Steckt das Netzwerkkabel ? "
		
		/usr/sbin/ifplugstatus | /bin/grep eth0 | /bin/grep beat > /dev/null
		
		if [ $? != 0 ]
		then 
		 echo "Nein"
		 echo -n "Steckt die WLAN-Karte ? "
		 /bin/lspci | grep "Am 1771" >/dev/null
		 if [ $? == 0 ]
		  then 
		  echo "Ja"
		  echo "Richte Wlan-Verbindung ein..."
		  /sbin/modprobe Nautilus >/dev/null
		  /opt/Am1771/connect > /dev/null
		  /sbin/dhclient >/dev/null
		  echo "Ok, WLAN-Verbindung steht"
		 else
		  echo "Nein"
		  echo "Kein Netzwerk, kein Internet :-("
		 fi;
		else
		 echo "Ja"
		 echo "Richte LAN-Verbindung ein..."
		 /sbin/ifconfig eth0 up >/dev/null
		 /sbin/dhclient >/dev/null		
		 echo "Ok, LAN-Verbindung steht"
		fi;
			
		;;
	stop)
		echo "Hmm, nix zu stoppen hier !"
		;;
	restart)
		$0 stop
		sleep 1
		$0 start
		;;
	*)
		echo "Usage: /etc/init.d/chk_network {start|stop|restart}"
		exit 1 
esac

exit 0
Es fehlt noch ein wenig, Fehler abfangen etc....kommt noch...

Greetz
Marc

Benutzeravatar
chimaera
Beiträge: 3804
Registriert: 01.08.2002 01:31:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von chimaera » 17.10.2004 13:07:18

eher so:

Code: Alles auswählen

.. > /dev/null 2>&1 & 
[..] Linux is not a code base. Or a distro. Or a kernel. It's an attitude. And it's not about Open Source. It's about a bunch of people who still think vi is a good config UI. - Matt's reply on ESR's cups/ui rant

MarcM
Beiträge: 379
Registriert: 19.06.2004 16:28:22
Wohnort: Kassel

Beitrag von MarcM » 17.10.2004 13:25:07

THX, so gehts ! Warum aber das & als letztes ? Damit der Kram im Hintergrund läuft ?

Seltsam ist nur das ein modprobe -q hier kein quiet brachte.........naja, nu gehts !


DANKE

Marc

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22448
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 17.10.2004 13:31:36

Fehlermeldungen sind meistens davon nicht betroffen, da sie auf dem dem Standardfehlerkanal (2) ausgegeben werden. Wenn die nicht haben will kann man sie nur nach /dev/null umleiten. Wird in den Startscripten so gemacht die in /etc/iniit.d lsind. . Auch andere Scripte .
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

MarcM
Beiträge: 379
Registriert: 19.06.2004 16:28:22
Wohnort: Kassel

Beitrag von MarcM » 17.10.2004 13:36:01

*grummel*

Wenn ich das Script "so" aufrufe klappt das. Beim Aufruf beim booten klappt es allerdings nicht ! Die Meldungen werden nicht unterdrückt, auch funktioniert die Netzwerkverbindung danach nicht. Ohne das & am Ende geht zumindest die Verbindung.....Irgendwelche Vorschläge ?

Greetz
Marc

Benutzeravatar
Voyager_MP
Beiträge: 628
Registriert: 22.06.2004 10:04:07
Wohnort: Aachen

Beitrag von Voyager_MP » 17.11.2004 15:12:38

Hatte mal das gleich problem, hab mir auch ein script geschrieben.

Hier ist es. (das geht)

Code: Alles auswählen

!/bin/bash
#===================================================================================
#
#         FILE:  NETWORK1.sh
#
#        USAGE:  ./1.sh 
#
#     SYNOPSIS:  
#
#  DESCRIPTION:  
#      OPTIONS:  ---
# REQUIREMENTS:  ---
#         BUGS:  ---
#        NOTES:  ---
#       AUTHOR:  Michel Pelzer (), michel@pelzernet.de
#      COMPANY:  ATecoM GmbH
#      VERSION:  1.0
#      CREATED:  21.08.2004 11:26:20 CEST
#     REVISION:  ---
#===================================================================================
#DEVICES
DRIVER="ndiswrapper"
NICKNAME="Michel"
#COLOURS
CS="\\033[1;32m"
CF="\\033[1;31m"
CN="\\033[0;39m"

ifup lo >/dev/null 2>&1

# LAN
####################################################################################
lantest () {
DEVICE=`ifconfig | grep eth0 | gawk 'NR == 1 {print $1}'`
if [ -z $DEVICE ]; then
        #echo "setze test lan auf"
        ifconfig eth0 1.1.1.1 netmask 0.0.0.0 up
        sleep 4
fi
LINKSTATUS=`ethtool eth0 |grep Link | gawk '{print $3}' | sed -e 's,[:],,g'`
if [ $LINKSTATUS == "yes" ]; then
        echo -e $CS"found"$CN
     else
        ifconfig eth0 down
        echo -e $CF"not found"$CN
fi
}
echo
echo -en "Network: Checking for Cabel: "

lantest

echo -e "Network: Negotiating with Network: Please wait ..."

case $LINKSTATUS in
       yes)
       WLAN=`cat /proc/net/wireless | grep wlan* | gawk '{print $1}' | sed -e 's,[:],,g'`
       ifconfig $WLAN down >/dev/null 2>&1
       dhclient eth0 >/dev/null 2>&1
       RESULT=`ifconfig | grep -n2 eth0 | gawk 'NR == 2 {print $2}'`
       if [ $RESULT = "inet" ]; then
           GATEWAY=`route -n | grep eth0 | grep -v 255.* | gawk '{print $2}'`
           ping -c 1 $GATEWAY >/dev/null 2>&1
           RESULT=$?
           if [ $RESULT -eq 0 ]; then
           echo -en "Network: Connection Established with " $CS
           case $GATEWAY in
               10.2.4.1)
               echo "atecom"
               ln -sf /etc/mail.atecom /etc/mail
               ln -sf /etc/auto.atecom /etc/auto.misc
               /etc/init.d/autofs reload >/dev/null 2>&1
               ;;
               192.168.120.1)
               echo "pelzernet"
               ln -sf /etc/mail.pelzernet /etc/mail
               ln -sf /etc/auto.pelzernet /etc/auto.misc
               /etc/init.d/autofs reload >/dev/null 2>&1
               ;;
               *)
               echo "unknown"
               ;;
           esac
           fi
       fi
       echo -e $CN
       ;;
       no)
       # Wlan
       ####################################################################################
        wlanscan () {
        WLAN=`cat /proc/net/wireless | grep wlan* | gawk '{print $1}' | sed -e 's,[:],,g'`
        if [ -z $WLAN ]; then
                #echo "lade treiber"
                modprobe $DRIVER
                WLAN="wlan0"
                #echo "treiber geladen"
        fi
        ESSID=`iwlist $WLAN scan | gawk 'NR == 3 {print $1}' | sed -e 's,["],,g' -e 's,[ESSID:],,g'`
        }

        wlanscan

        gateway () {
        GATEWAY=`route -n | grep $WLAN | grep -v 255.* | gawk '{print $2}'`
        }

        connect () {
        iwconfig $WLAN essid $ESSID nickname $NICKNAME $KEY
        dhclient $WLAN >/dev/null 2>&1
        RESULT=`ifconfig $WLAN | gawk 'NR == 2 {print $1}'`
        if [ $RESULT = "inet" ]; then
            gateway
            ping -c 1 $GATEWAY >/dev/null 2>&1
            RESULT=$?
            if [ $RESULT -eq 0 ]; then
                   echo -e "Network: Connection established with" $CS\"$ESSID\"$CN
               else
                   echo -e "Network: Failed to connect to" $CS\"$ESSID\"$CN
            fi
        fi

        }

        case $ESSID in
            atecom)
                KEY="key blablalablblalblalblablsalblalb"
                ln -sf /etc/mail.atecom /etc/mail
                ln -sf /etc/auto.atecom /etc/auto.misc
                /etc/init.d/autofs reload
                connect
                ;;
            pelzernet)
                KEY="key blabblalblablalbalblablabalbla"
                ln -sf /etc/mail.pelzernet /etc/mail
                ln -sf /etc/auto.pelzernet /etc/auto.misc
                /etc/init.d/autofs reload
                connect
                ;;
            lettow)
                KEY="key blablablalbalbalbalblablablabl"
                connect
                ;;
            *)
                NICKAME="Voyager_MP"
                ;;
        esac
esac
Gruß Michel

Antworten