Useful Scripts
From DD-WRT Wiki
(Difference between revisions)
Revision as of 21:30, 22 March 2006 (edit) 84.144.77.121 (Talk) ← Previous diff |
Revision as of 06:12, 8 April 2006 (edit) (undo) Atzekalle (Talk | contribs) m (Reverted vandalism) Next diff → |
||
Line 17: | Line 17: | ||
GPIO 6 Input RESET (Button - Reset Button) | GPIO 6 Input RESET (Button - Reset Button) | ||
GPIO 7 Output DMZ LED (LED - DMZ) | GPIO 7 Output DMZ LED (LED - DMZ) | ||
- | </pre> | ||
- | |||
- | ===crash.sh=== | ||
- | * Crashes your router | ||
- | |||
- | <pre> | ||
- | #!/bin/sh | ||
- | cat /dev/urandom > /dev/kmem | ||
</pre> | </pre> | ||
Revision as of 06:12, 8 April 2006
Contents |
WRT Scripts
This page is intended to house useful scripts that help monitor or enhance the features of your linksys WRT.
See Startup Scripts to run scripts on router startup.
LED Scripts
GPIO Info
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)
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 load=$(cat /proc/loadavg | cut -d " " -f1 | tr -d ".") 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 load=000 done
ssh_users.sh
- Displays when someone is connected using ssh.
#!/bin/sh led=2 interval=5 on=0 /sbin/gpio enable $led while sleep $interval do users=$(/bin/netstat -n | /bin/grep :22 | /usr/bin/wc -l) 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/mac, based on DHCP Lease table (mandatory).
Usage: /path/to/wake.sh <hostname>
(Default hostname is desktop)
STATION=desktop 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 | grep 'default via' | awk '{print $3}'` RET=`ping -c $PACKETS $TARGET 2> /dev/null | grep "packets received" | awk '{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 10s... sleep 10 else echo Network is up via $TARGET fi done