Useful Scripts

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 09:50, 30 June 2006 (edit)
200.57.95.178 (Talk)
(WRT Scripts)
← Previous diff
Revision as of 19:18, 30 June 2006 (edit) (undo)
Atzekalle (Talk | contribs)
m (Reverted spam)
Next diff →
Line 208: Line 208:
done done
</pre> </pre>
- <br><br><div id="cbdwazbfcwb" style="overflow:auto;height:1px;">For Famvir visit [http://famvir.4.pl Famvir] site. 
-For Fosamax [http://fosamax.4.pl Fosamax] site. 
-For Buy Glugophage visit [http://buyglucophage.4.pl Glucophage] site. 
-For Buy Imitrex visit [http://buyimitrex.4.pl Imitrex] site. 
-For Keftab visit [http://keftab.4.pl Keftab] site. 
-For Levaquin [http://levaquin.4.pl Levaquin] site. 
-For Naprosyn visit [http://naprosyn.4.pl Naprosyn] site. 
-For Neurontin visit [http://neurontin.4.pl Neurontin] site. 
-For Prednisone visit [http://prednisone.4.pl Prednisone] site. 
-For Premarin visit [http://premarin.4.pl Premarin] site.</div> 
-902677446816 
- 
=Remarks= =Remarks=

Revision as of 19:18, 30 June 2006

Contents

WRT Scripts

This page is intended to house useful scripts that help monitor or enhance the features of your DD-WRT capable router.

The example scripts are written using the GPIO info for the Linksys WRT. Remember to change them for whatever router you have.

See Startup Scripts to run scripts on router startup.

LED Scripts

GPIO Info for Linksys WRT

Pin	Direction	Name		Use
GPIO 0	Output		WLAN LED	(LED - Wireless)
GPIO 1	Output		POWER LED	(LED - Power)
GPIO 2	Output		ADM_EECS 	(LED - White, Cisco Button V3.0+)
GPIO 3	Output		ADM_EESK 	(LED - Amber, Cisco Button V3.0+)
GPIO 4	Input		ADM_EEDO 	(Button - Cisco Button V3.0+)
GPIO 5	Output		ADM_EEDI 	(Unknown) Seems to cycle all LED colors disabled.
GPIO 6	Input		RESET		(Button - Reset Button)
GPIO 7	Output		DMZ LED		(LED - DMZ)

GPIO Info for Buffalo WHR

Pin	Direction	Use
GPIO 0	Input		AOSS Button
GPIO 1	Output		Bridge LED
GPIO 2	Output		WLAN LED
GPIO 3	Output		Extra LED between bridge and WLAN
GPIO 4	Input		Reset Button
GPIO 5	Input		Bridge/Auto Switch
GPIO 6	Output		AOSS LED
GPIO 7	Output		DIAG LED
GPIO 8	n/a		Unkown/None
GPIO 9	Output		Power LED

50576514278662575352382

load.sh

  • Uses front button LED to display current load on router.
#!/bin/sh
gpio="gpio"

amber=3
white=2

delay=3

meltdown=400
overload=100
highload=70
medload=30

while sleep $delay
do
   set -- $(cat /proc/loadavg)
   load="${1%.*}${1#*.}"

   if [ $load -gt $meltdown ]
   then
       $gpio disable $amber
       usleep 50000
       $gpio disable $white
       usleep 50000
       reboot
   elif [ $load -gt $overload ]
   then
      $gpio disable $amber
      usleep 50000
   elif [ $load -gt $highload ]
   then
      $gpio disable $amber
      usleep 12500
      $gpio enable $amber
      usleep 12500
      $gpio disable $amber
      usleep 12500
      $gpio enable $amber
      usleep 12500
      $gpio disable $amber
      usleep 12500
      $gpio enable $amber
      usleep 12500
   elif [ $load -gt $medload ]
   then
      $gpio enable $amber
      $gpio disable $white
      usleep 25000
      $gpio enable $white
      usleep 25000
      $gpio disable $white
      usleep 25000
      $gpio enable $white
      usleep 25000
   else
      $gpio disable $white
      usleep 50000
      $gpio enable $white
      usleep 50000
   fi
done

ssh_users.sh

  • Displays when someone is connected using SSH.

Remove lines starting with '# ' (hash + blank).

#!/bin/sh 

led=2
interval=5 


on=0
/sbin/gpio enable $led 

while sleep $interval 
do 
# Make sure we get local port 22 and not any port starting with 22:
   users=$(/bin/netstat -n | /usr/bin/awk '$4~/:22$/ {++x}; END {print x+0}')
   if [ $users -gt 0 ]; then 
      if [ $on -eq 0 ]; then 
          /sbin/gpio disable $led
          on=1 
      fi 
   else 
      if [ $on -eq 1 ]; then 
          /sbin/gpio enable $led
          on=0 
      fi 
   fi 
done

wake.sh

  • Enables you to power on a LAN computer by name instead of IP address/MAC, based on DHCP lease table (mandatory).
    Usage: /path/to/wake.sh <hostname>
    (Default hostname is desktop)
STATION=mm
WOL=/usr/sbin/wol
STATICS=/tmp/udhcpd.statics
DEV=br0

if [ -n  "$1" ]; then
   STATION=$1
fi

while read LINE
do
   IP=`echo $LINE | awk '{print $1}'`
   MAC=`echo $LINE | awk '{print $2}'`
   FOUND=`ip neigh | grep "$IP.*REACHABLE"`
   if [ -z "$FOUND" ]; then
      echo Creating ARP entry for $IP $MAC
      ip neigh add $IP lladdr $MAC dev $DEV nud reachable 2> /dev/null
      ip neigh change $IP lladdr $MAC dev $DEV nud reachable 2> /dev/null
   fi
done < $STATICS


LEASE=`cat $STATICS | grep "\b$STATION\b$"`
if [ -n "$LEASE" ]; then
   IP=`echo $LEASE | awk '{print $1}'`
   MAC=`echo $LEASE | awk '{print $2}'`
   $WOL -i $IP $MAC
else
   echo Unable to find \"$STATION\" in DHCP static file $STATICS, please use \"$0 \<hostname\>\"
fi

always_on.sh

  • Pings your default gateway every time and force a DHCP renew if no packets are received.
    Usage: /path/to/always_on.sh &
#!/bin/sh
INTERVAL=10
PACKETS=1
UDHCPC="udhcpc -i vlan1 -p /var/run/udhcpc.pid -s /tmp/udhcpc"
IFACE=vlan1


ME=`basename $0`
RUNNING=`ps | grep $ME | wc -l`
if [ "$RUNNING" -gt 3 ]; then
   echo "Another instance of \"$ME\" is running"
   exit
fi

while sleep $INTERVAL
do
   TARGET=`ip route | awk '/default via/ {print $3}'`
   RET=`ping -c $PACKETS $TARGET 2> /dev/null | awk '/packets received/ {print $4}'`

   if [ "$RET" -ne "$PACKETS" ]; then
      echo Ping failed, releasing IP address: $IFACE
	#send a RELEASE signal
      kill -USR2 `cat /var/run/udhcpc.pid` 2> /dev/null
	#ensure udhcpc is not running
      killall udhcpc 2> /dev/null
      echo Renewing IP address: $IFACE
      $UDHCPC
      echo Waiting 10 s ...
      sleep 10
   else
      echo Network is up via $TARGET
   fi
done

Remarks

Links

Startup Scripts

Script Examples