Script examples

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 14:28, 23 February 2006 (edit)
Tin-man (Talk | contribs)
(added links to other script pages)
← Previous diff
Revision as of 14:29, 23 February 2006 (edit) (undo)
Tin-man (Talk | contribs)
m (my typo)
Next diff →
Line 127: Line 127:
(If anyone knows how to get a correct noise figure, please either add it here or in the discussion tab) (If anyone knows how to get a correct noise figure, please either add it here or in the discussion tab)
- 
-'''You are here: ''' '''[[Main Page]]'''/'''[[DD-WRT Docu (EN)]]'''/'''[[Script Examples]]''' 
=Links= =Links=
[[Startup Scripts]] [[Startup Scripts]]
-[[Usefull scripts]]+[[Useful scripts]]

Revision as of 14:29, 23 February 2006

You are here: Main Page/DD-WRT Docu (EN)/Script Examples

Contents


Which IPs and hostnames are used for wireless clients?

Note: Only work if you get an IP from DHCP

 # mkdir -p /tmp/www
 while [ 1 ];
  do
  wl assoclist | awk '{print$2}' > /tmp/assocLIST
  # echo "<meta http-equiv="refresh" content="10"><b>Hostnames and IPs of WLAN clients</b> (last update: $(date))<p>"     > /tmp/www/wlan.html
  while read assocLINE
   do
     dumpleases | grep -i $assocLINE | awk '{print "Hostname: " $1, "MAC: " $2, "IP: " $3}'
   # echo "<br>";
        done < /tmp/assocLIST     # >> /tmp/www/wlan.html
  sleep 10;
done;

Output:

Hostname: tp MAC: 01:81:18:3d:49:5e IP: 192.168.2.101

You can change the order of "$1, $2, $3" or cut-out:

....awk '{print $1,$3}'

Output:

tp 192.168.2.101

if you want to show this in a browser remove the # and use: http://routerIP/user/wlan.html

To booting on startup see Startup Scripts

How can I protect this file? I want to allow showing this only if you are logged in the web interface! Please write it here, thanks

answer:name it wlan.asp

Keep ISP from disconnecting due to lack of traffic

Some Internet Service Providers will drop the connection if there is no traffic for some period of time (Idle Time-Out). With these script you can prevent this.

 while [ 1 ];
 do
 ping -c 5 www.example.com > /dev/null    # ping 5 packets
 sleep 300;                               # wait 5 minutes
 done;

If this does not work (providers ignores ICMP packets as traffic) use:

 while [ 1 ];
 do
 wget http://www.example.com/ -O /tmp/index -q   # download index file
 sleep 300;                                      # wait 5 minutes
 done;

How many connections are open for each IP?

For each active IP on the local network (assumed to be a 192.168.x.0 network below), this prints out the number of connections that this IP has open to hosts on the Internet. "Connections" includes both TCP and UDP - while there are no "UDP connections", Linux maintains NAT-related information about UDP traffic which is similar to that for TCP.

This is handy for finding that person in your LAN whose P2P software opens many hundreds of connections, making the network slow for everybody.

sed -n 's%.* src=\(192.168.[0-9.]*\).*%\1%p' /proc/net/ip_conntrack | sort | uniq -c

web interface?

can we show this from the browser? so that we dont have to remember that long command and telnet/ssh each time we need to see this. tia

this is great one! is it possible to display this in main status front page? how to see what source/dest ports are most connected? so we can examine if there's certain virus/worm spreading...

Signal strength

Small one line scripts to give a signal level display in the style of the Linux 'wavemon' program.

wl interface

If you are using the wrt in client mode and connecting it to another AP, you might want monitor the signal level that you are receiving at the client wrt. To do this we use the 'wl' command to access the details from the wireless driver.

wl rssi

gives the signal strength in dB's and

wl noise

gives the noise level.

The only problem with this is that different versions of the firmware give diferent outputs. Versions of dd-wrt firmware up to v23 give

signal is <number>

as the output to `wl rssi`, but version 24 just gives the number only whithout the "signal is " bit. This means that scripts which use the outputs from the wl command must be chosen for the different firmware versions.

In client Mode

We are interested in the signal to noise figure and in monitoring it continuously, so we need a small script to do it. I also decided that it would be useful to display a small graph of the s/n figure. This is an ugly script as I had to optimise it to get it to work fast enough to be useful on the slow wrt processors :( , but this does mean that it can easily just be cut and pasted into a telnet or ssh session onto the wrt as an ugly one-liner.

Firmware v23 and before

while true;do echo `wl rssi;wl noise`|awk '{print $3-$6}'|awk '{printf"Signal  :  "$1"\t";for(;j<$1;j++)printf"=";printf"\n"}';done

Firmware v24

while true;do echo `wl rssi;wl noise`|awk '{print $1-$2}'|awk '{printf"Signal  :  "$1"\t";for(;j<$1;j++)printf"=";printf"\n"}';done

The output will look a bit like this :-

Signal  :  8    ========
Signal  :  7    =======
Signal  :  8    ========
Signal  :  10   ==========
Signal  :  9    =========
Signal  :  11   ===========

To terminate, just press <ctrl> + c

In AP mode

Using it in AP mode is more difficult as firstly, you have to supply the MAC address of the client that you want to monitor, and secondly as I havent been able to get the 'wl' command to give a meaningful noise figure so you have to guess of what you think that the noise figure is.

while true;do echo `wl rssi <MAC ADDR OF CLIENT>`|awk '{print $3+<NOISE GUESS FIGURE>}'|awk '{printf"Signal  :  "$1"\t";for(;j<$1;j++)printf"=";printf"\n"}';done

(Note : I have yet to test this on firmware v24, but if it is the same as the client mode, then the following should work -- also need to test if the noise figure works for v24)

while true;do echo `wl rssi <MAC ADDR OF CLIENT>`|awk '{print $1+<NOISE GUESS FIGURE>}'|awk '{printf"Signal  :  "$1"\t";for(;j<$1;j++)printf"=";printf"\n"}';done

You will have to replace <MAC ADDR OF CLIENT> with the mac address of the client that you wish to monitor, and replace <NOISE GUESS FIGURE > with a guess of what you think that the noise level is at your location. I used the figure 97 as my guess for the noise level, but it is very likely that it will be diferent at your location.

Having to add in the noise fudge factor will probably mean that the signal to noise figure that you get will be wrong, but the script is still useful as it will give a graph which can show you the RELATIVE strength as you move the client around the room.

(If anyone knows how to get a correct noise figure, please either add it here or in the discussion tab)

Links

Startup Scripts

Useful scripts