is this a perl script? its a suse 9.0 network script i think is broken - Portable

This is a discussion on is this a perl script? its a suse 9.0 network script i think is broken - Portable ; THis is a really dumb question. what kind of script is this below? is it perl? and how best to learn? howto or other? i think it has a bug in it. it is not recognising the DEVICETYPE as wlan ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: is this a perl script? its a suse 9.0 network script i think is broken

  1. is this a perl script? its a suse 9.0 network script i think is broken



    THis is a really dumb question. what kind of script is this below? is
    it perl? and how best to learn? howto or other?

    i think it has a bug in it. it is not recognising the DEVICETYPE as
    wlan but instead as eth for my wireless laptop card. a bluetake
    bw001-r pcmcia card. amtel chipset.

    thanks if someone can help




    # network 1.86 2002/07/03 06:44:01 (David Hinds)
    #
    # Initialize or shutdown a PCMCIA ethernet adapter
    #
    # This script should be invoked with two arguments. The first is the
    # action to be taken, either "start", "stop", or "restart". The
    # second is the network interface name.
    #
    # The script passes an extended device address to 'network.opts' in
    # the ADDRESS variable, to retrieve device-specific configuration
    # options. The address format is "scheme,socket,instance,hwaddr"
    # where "scheme" is the current PCMCIA device configuration scheme,
    # "socket" is the socket number, "instance" is used to number multiple
    # interfaces in a single socket, and "hwaddr" is the card's hardware
    # ethernet address.
    #

    if [ -r ./shared ] ; then . ./shared ; else . /etc/pcmcia/shared ; fi
    if [ -r /etc/sysconfig/network/scripts/functions ] ; then
    . /etc/sysconfig/network/scripts/functions
    fi

    # Get device attributes
    get_info $DEVICE
    HWADDR=`/sbin/ifconfig $DEVICE | sed -ne
    's/.*\(..:..:..:..:..:..\).*/\1/p'`

    # Load site-specific settings
    ADDRESS="$SCHEME,$SOCKET,$INSTANCE,$HWADDR"
    : ADDRESS=$ADDRESS
    start_fn () { return; }
    stop_fn () { return; }
    .. $0.opts

    if [ "$USE_SUSE_NETWORK_SETUP" = "yes" ] ; then
    echo "dont_touch PCMCIA" > /var/run/hotplug/net-$DEVICE
    DEVICETYPE=`(IFS=1234567890; read a b < <(echo $DEVICE); echo $a)`
    # DEVICETYPE=eth
    case $ACTION in
    start)
    /sbin/ifup $DEVICETYPE-pcmcia-$SOCKET $DEVICE -o hotplug quiet
    doalias
    case $? in 9) true ;; esac # Be happy if device is just not
    configured
    ;;
    stop)
    /sbin/ifdown $DEVICETYPE-pcmcia-$SOCKET $DEVICE -o hotplug quiet
    # /sbin/ip link set down dev $DEVICE
    ;;
    check)
    is_true $NO_CHECK && exit 0
    /sbin/ifstatus eth-pcmcia-$SOCKET $DEVICE -o check
    test $? = "$R_BUSY" || exit 0
    echo "Interface $DEVICE is busy"
    exit 1
    ;;
    *) echo "still not implemented" ;;
    esac
    exit
    fi

    RESOLV=/etc/resolv.conf

    # Now, run the specific script for Wireless LAN interfaces
    # Note : we need the wireless parameters to be set up before IP
    parameters,
    # so that we can perform DHCP over the Wireless link if needed. Jean
    II
    O_INFO=$INFO ; INFO=
    if [ -x ./wireless ] ; then
    . ./wireless
    else
    . /etc/pcmcia/wireless
    fi
    INFO=$O_INFO

    bootp_setup ()
    {
    if match `uname -r` "2.[2-9].*" ; then
    log /sbin/ifconfig $DEVICE up
    else
    log /sbin/ifconfig $DEVICE up 0.0.0.0
    log /sbin/route add default dev $DEVICE netmask 0.0.0.0
    fi
    }

    case "$ACTION" in

    'start')
    [ -n "$VERBOSE" -a -n "$INFO" ] && echo "$INFO"

    [ -n "$IF_PORT" ] && /sbin/ifport $DEVICE $IF_PORT

    if is_true $PUMP ; then
    log "/sbin/pump -i $DEVICE > /dev/null" || exit 1
    elif is_true $BOOTP ; then
    bootp_setup
    if [ -x /sbin/bootpc ] ; then
    eval `/sbin/bootpc --bootfile '' --returniffail \
    --timeoutwait 10 --dev $DEVICE`
    log /sbin/ifconfig $DEVICE down
    if [ -n "$GATEWAYS" ] ; then
    set - $GATEWAYS ; GATEWAY=$1
    fi
    elif [ -x /sbin/pump ] ; then
    log "/sbin/pump -i $DEVICE > /dev/null" || exit 1
    else
    exit 1
    fi
    elif is_true $DHCP ; then
    bootp_setup
    HN=${DHCP_HOSTNAME:+-h $DHCP_HOSTNAME}
    if [ -x /sbin/dhcpcd ] ; then
    # This is a version check: I know it looks weird
    if /sbin/dhcpcd -XYZZY 2>&1 | grep -q DHCP ; then
    log "/sbin/dhcpcd -d $HN $DEVICE >/dev/null 2>&1" ||
    exit 1
    else
    # Jump through hoops for lame 0.70-era dhcpcd
    L=/var/run/dhcp-lock-$DEVICE
    /bin/echo "#!/bin/sh\nrm $L" > $L ; chmod +x $L
    log "/sbin/dhcpcd $HN -c $L $DEVICE >/dev/null 2>&1"
    for t in 0 1 2 3 4 5 6 7 8 9 ; do
    sleep 2 ; if [ ! -e $L ] ; then break ; fi
    done
    rm -f $L
    if [ -e /etc/dhcpc/resolv.conf ] ; then
    echo "# $DEVICE begin" > $RESOLV.N
    chmod og+r $RESOLV.N
    cat /etc/dhcpc/resolv.conf >> $RESOLV.N
    echo "# $DEVICE end" >> $RESOLV.N
    cat $RESOLV >> $RESOLV.N ; mv $RESOLV.N $RESOLV
    fi
    fi
    elif [ -x /sbin/dhclient ] ; then
    log "/sbin/dhclient $DEVICE >/dev/null 2>&1" || exit 1
    elif [ -x /sbin/pump ] ; then
    log "/sbin/pump $HN -i $DEVICE > /dev/null" || exit 1
    else
    exit 1
    fi
    fi

    if [ -n "$IPADDR" ] ; then
    # Basic network setup
    NM=${NETMASK:+netmask $NETMASK}
    BC=${BROADCAST:+broadcast $BROADCAST}
    MTU=${MTU:+mtu $MTU}
    log /sbin/ifconfig $DEVICE up $IPADDR $NM $BC $MTU
    if [ -n "$NETWORK" ] ; then
    /sbin/ifuser $DEVICE $NETWORK || \
    log /sbin/route add -net $NETWORK $NM dev $DEVICE
    elif [ -n "$GATEWAY" ] ; then
    /sbin/ifuser $DEVICE $GATEWAY || \
    log /sbin/route add $GATEWAY $DEVICE
    fi
    [ -n "$GATEWAY" ] && /sbin/route add default gw $GATEWAY
    metric 1
    fi

    # Update DNS stuff
    if [ -n "$DOMAIN$SEARCH$DNSSRVS$DNS_1$DNS_2$DNS_3" ] ; then
    echo "# $DEVICE begin" > $RESOLV.N
    chmod og+r $RESOLV.N
    [ -n "$DOMAIN" ] && echo "domain $DOMAIN" >> $RESOLV.N
    [ -n "$SEARCH" ] && echo "search $SEARCH" >> $RESOLV.N
    for DNS in $DNSSRVS $DNS_1 $DNS_2 $DNS_3 ; do
    echo "nameserver $DNS" >> $RESOLV.N
    done
    echo "# $DEVICE end" >> $RESOLV.N
    sed -e "/# $DEVICE begin/,/# $DEVICE end/d" $RESOLV >>
    $RESOLV.N
    mv $RESOLV.N $RESOLV
    fi

    # Handle NFS mounts
    if [ -n "$MOUNTS" ] ; then
    for MT in $MOUNTS ; do log mount -v $MT ; done
    fi

    if [ -n "$IPX_NETNUM" ] ; then
    log ipx_interface add $DEVICE $IPX_FRAME $IPX_NETNUM
    fi

    start_fn $DEVICE
    ;;

    'stop')

    stop_fn $DEVICE

    if is_true $PUMP || is_true $BOOTP || is_true $DHCP || \
    [ -n "$IPADDR" ] ; then

    # Shut down all NFS mounts on this interface
    nfsstop ()
    {
    local HOST MT
    if read HOST MT ; then
    nfsstop
    if /sbin/ifuser $DEVICE $HOST ; then
    do_fuser -k -m $MT > /dev/null
    log umount -f -v $MT
    fi
    fi
    }
    mount -t nfs | sed -e 's/:.* on \(.*\) type .*/ \1/' | nfsstop

    [ -n "$IPX_NETNUM" ] && ipx_interface del $DEVICE $IPX_FRAME

    if is_true $PUMP ; then
    log pump -r -i $DEVICE
    elif is_true $DHCP ; then
    if [ -x /sbin/dhcpcd ] ; then
    PID=`cat /var/run/dhcpcd-$DEVICE.pid 2>/dev/null`
    if [ -n "$PID" ] ; then
    kill -TERM $PID
    sleep 2
    fi
    /sbin/dhcpcd -XYZZY 2>&1 | grep -q DHCP || \
    rm -f /var/run/dhcpcd-$DEVICE.pid
    elif [ -x /sbin/dhclient ] ; then
    PID=`cat /var/run/dhclient.pid 2>/dev/null`
    if [ -n "$PID" ] ; then kill -TERM $PID ; fi
    elif [ -x /sbin/pump ] ; then
    log /sbin/pump -r -i $DEVICE
    fi
    fi
    fi

    # Remove nameservers
    if grep -q "# $DEVICE begin" $RESOLV ; then
    sed -e "/# $DEVICE begin/,/# $DEVICE end/d" $RESOLV >
    $RESOLV.N
    mv $RESOLV.N $RESOLV
    fi

    log /sbin/ifconfig $DEVICE down
    ;;

    'check')
    is_true $NO_CHECK && exit 0
    /sbin/ifconfig $DEVICE | grep -q RUNNING || exit 0

    # Check for any in-use NFS mounts
    nfscheck ()
    {
    while read HOST MT ; do
    /sbin/ifuser $DEVICE $HOST && do_fuser -sm $MT && exit 1
    done
    }
    mount -t nfs | sed -e 's/:.* on \(.*\) type .*/ \1/' | nfscheck

    # Check for active TCP or UDP connections
    getdests ()
    {
    IFS=" :" ; read A ; read A
    while read A B C D E HOST PORT STATE ; do
    if [ "$STATE" != "FIN_WAIT1" -a "$STATE" != "FIN_WAIT2" \
    -a "$STATE" != "CLOSE_WAIT" -a "$STATE" != "TIME_WAIT"
    \
    -a "$HOST" != "127.0.0.1" -a "$HOST" != "0.0.0.0" \
    -a "$STATE" != "CLOSE" -a "$PORT" != "*" ] ; then\
    echo $HOST
    fi
    done
    }
    DESTS=`netstat -ntuw | getdests`
    /sbin/ifuser $DEVICE $DESTS && exit 1
    ;;

    'cksum')
    if [ $WIRELESS = 1 ] ; then exit 1 ; fi
    chk_simple "$NEW_SCHEME,$SOCKET,$INSTANCE,$HWADDR" || exit 1
    ;;

    'restart')
    [ -n "$IPADDR" ] && /sbin/ifconfig $DEVICE down up
    ;;

    'suspend'|'resume')
    ;;

    *)
    usage
    ;;

    esac

    exit 0


  2. Re: is this a perl script? its a suse 9.0 network script i think is broken

    On Thu, 4 Mar 2004 17:49:37 +0000 (UTC), RoadRunner wrote:
    > THis is a really dumb question. what kind of script is this below? is
    > it perl? and how best to learn? howto or other?
    > i think it has a bug in it. it is not recognising the DEVICETYPE as
    > wlan but instead as eth for my wireless laptop card. a bluetake
    > bw001-r pcmcia card. amtel chipset.


    > # network 1.86 2002/07/03 06:44:01 (David Hinds)
    > #
    > # Initialize or shutdown a PCMCIA ethernet adapter
    > #
    > # This script should be invoked with two arguments. The first is the
    > # action to be taken, either "start", "stop", or "restart". The
    > # second is the network interface name.
    > #
    > # The script passes an extended device address to 'network.opts' in
    > # the ADDRESS variable, to retrieve device-specific configuration
    > # options. The address format is "scheme,socket,instance,hwaddr"
    > # where "scheme" is the current PCMCIA device configuration scheme,
    > # "socket" is the socket number, "instance" is used to number multiple
    > # interfaces in a single socket, and "hwaddr" is the card's hardware
    > # ethernet address.
    > #


    > if [ -r ./shared ] ; then . ./shared ; else . /etc/pcmcia/shared ; fi
    > if [ -r /etc/sysconfig/network/scripts/functions ] ; then
    > . /etc/sysconfig/network/scripts/functions
    > fi
    >...


    It's a shell script, although it doesn't start with the line:
    #!/bin/sh
    It uses bash syntax, and it's for starting and stopping the pcmcia
    ethernet adapter.

    I'm not sure why you expect it to recognise "wlan" instead of "eth".
    Is there some reason why the interface name makes a difference?

    Is this script from your startup directories?

    --
    Dale Dellutri (lose the Q's)

+ Reply to Thread