WiFi script
WPA
rc.wireless
#!/bin/sh
if [ -z $1 ] ; then
echo "Usage: rc.wireless <interface>"
return 1 2> /dev/null || exit 1
fi
INTERFACE=$1
LOGGER=${LOGGER:-cat}
SLEEP=2
# Find the path where wireless tools are installed
for IWPATH in /usr/{bin,sbin} /usr/local/{bin,sbin} /sbin ; do
if [ -x $IWPATH/iwconfig ] ; then break ; fi
done
# Set all desired settings via iwconfig
IWCOMMAND="$IWPATH/iwconfig ${INTERFACE}"
IWPCOMMAND="$IWPATH/iwpriv ${INTERFACE}"
IFCOMMAND="/sbin/ifconfig ${INTERFACE}"
is_wireless_device ()
{
[ -x $IWPATH/iwconfig ] || return 1
LC_ALL=C $IWPATH/iwconfig $1 2>&1 | \
grep -q "no wireless extensions" || return 0
return 1
}
# Is the device wireless? If not, exit this script.
is_wireless_device ${INTERFACE} || return 0 2> /dev/null || exit 0
# Get the MAC address for the interface
HWADDR=`/sbin/ifconfig ${INTERFACE} | sed -ne 's/.*\(..:..:..:..:..:..\).*/\1/p'`
# Read the configuration information for the card with address $HWADDR from /etc/rc.d/rc.wireless.conf:
. /etc/rc.d/rc.wireless.conf
[ -n "$VERBOSE" -a -n "$INFO" ] && echo "$1 is '$INFO'"
if [ -n "$IP" ] ; then
echo "$IFCOMMAND $IP netmask $MASK up" | $LOGGER
$IFCOMMAND down
$IFCOMMAND $IP netmask $MASK
fi
if [ -n "$DEFGW" ] ; then
echo "route add default gw $DEFGW" | $LOGGER
route del default > /dev/null 2> /dev/null
route add default gw $DEFGW
sleep $SLEEP
fi
if [ -n "$MODE" ] ; then
echo "$IWCOMMAND mode $MODE" | $LOGGER
$IWCOMMAND mode $MODE
sleep $SLEEP
fi
if [ -n "$NICK" ] ; then
echo "$IWCOMMAND nick $NICK" | $LOGGER
$IWCOMMAND nick $NICK
fi
if [ -n "$NWID" ] ; then
echo "$IWCOMMAND nwid $NWID" | $LOGGER
$IWCOMMAND nwid $NWID
fi
if [ -n "$FREQ" ] ; then
echo "$IWCOMMAND freq $FREQ" | $LOGGER
$IWCOMMAND freq $FREQ
sleep $SLEEP
elif [ -n "$CHANNEL" ] ; then
echo "$IWCOMMAND channel $CHANNEL" | $LOGGER
$IWCOMMAND channel $CHANNEL
sleep $SLEEP
fi
if [ -n "$SENS" ] ; then
echo "$IWCOMMAND sens $SENS" | $LOGGER
$IWCOMMAND sens $SENS
sleep $SLEEP
fi
if [ -n "$RATE" ] ; then
echo "$IWCOMMAND rate $RATE" | $LOGGER
$IWCOMMAND rate $RATE
fi
if [ -n "$RTS" ] ; then
echo "$IWCOMMAND rts $RTS" | $LOGGER
$IWCOMMAND rts $RTS
sleep $SLEEP
fi
if [ -n "$FRAG" ] ; then
echo "$IWCOMMAND frag $FRAG" | $LOGGER
$IWCOMMAND frag $FRAG
sleep $SLEEP
fi
if [ -n "$RETRY" ] ; then
echo "$IWCOMMAND retry $RETRY" | $LOGGER
$IWCOMMAND retry $RETRY
sleep $SLEEP
fi
if [ -n "$TXPOWER" ] ; then
for id in $TXPOWER; do
a=`echo $TXPOWER | cut -d "|" -f 1`
b=`echo $TXPOWER | cut -d "|" -f 2`
echo "$IWCOMMAND txpower $a $b" | $LOGGER
$IWCOMMAND txpower $a $b
sleep $SLEEP
done
fi
if [ -n "$WRITEMIF" ] ; then
for id in $WRITEMIF; do
a=`echo $WRITEMIF | cut -d "|" -f 1`
b=`echo $WRITEMIF | cut -d "|" -f 2`
echo "$IWCOMMAND writemif $a $b" | $LOGGER
$IWPCOMMAND writemif $a $b
sleep $SLEEP
done
fi
if [ -n "$KEYS" ] ; then
x=0
for id in $KEYS; do
x=$(($x+1))
echo "$IWCOMMAND key $id [$x]" | $LOGGER
$IWCOMMAND key $id [$x]
done
fi
if [ -n "$KEY" ] ; then
echo "$IWCOMMAND key $KEY" | $LOGGER
$IWCOMMAND key $KEY
fi
if [ -n "$MACCTRL" ] ; then
for id in $MACCTRL; do
if [ -n "`echo $id | grep ':'`" ]; then
echo "$IWPCOMMAND addmac $id" | $LOGGER
$IWPCOMMAND addmac $id
else
echo "$IWPCOMMAND maccmd $id" | $LOGGER
$IWPCOMMAND maccmd $id
fi
done
fi
# ESSID jako poslední
if [ -n "$ESSID" ] ; then
echo "$IWCOMMAND essid $ESSID" | $LOGGER
$IWCOMMAND essid $ESSID
fi
if [ -n "$IP" ] ; then
echo "$IFCOMMAND up" | $LOGGER
$IFCOMMAND up
fi
rc.wireles.conf
VERBOSE=1
SLEEP=2
case "$HWADDR" in
# WLAN0
xx:xx:xx:xx:*)
IP="x.x.x.x"
MASK="255.255.255.0"
## Replace default gateway or empty
DEFGW="x.x.x.x"
MODE="managed"
ESSID="net"
RATE=auto
# SENS=1
# TXPOWER="0|fixed"
# WRITEMIF="62|225"
KEYS="s:1234567890123 s:3210987654321"
KEY="off"
# RTS="off"
# FRAG="off"
INFO="Karta do Internetu WLAN0"
# RETRY=20
NICK="wlan0"
MACCTRL="0 3 11:22:33:44:55:66 11:22:33:44:55:77 0"
;;
esac