Kodama's home / tips.
A patch for ping command. This patch enable the ping command to send Magic Packet. See also Wake On Lan(WOL) tool/class for Ruby.
Check with "tcpdump -i lo -x -s 128". ping -c2 -s 110 -p ffffffffffff112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566112233445566 localhost
long-fill.patch
K.Kodama 1999-11-27
*** ping.c.orig Mon Nov 29 20:51:32 1999
--- ping.c Mon Nov 29 21:14:20 1999
***************
*** 1155,1161 ****
fill(void *bp1, char *patp)
{
register int ii, jj, kk;
! int pat[16];
char *cp, *bp = (char *)bp1;
for (cp = patp; *cp; cp++)
--- 1155,1161 ----
fill(void *bp1, char *patp)
{
register int ii, jj, kk;
! int pat[128];
char *cp, *bp = (char *)bp1;
for (cp = patp; *cp; cp++)
***************
*** 1165,1174 ****
exit(2);
}
ii = sscanf(patp,
! "%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x",
&pat[0], &pat[1], &pat[2], &pat[3], &pat[4], &pat[5], &pat[6],
&pat[7], &pat[8], &pat[9], &pat[10], &pat[11], &pat[12],
! &pat[13], &pat[14], &pat[15]);
if (ii > 0)
for (kk = 0; kk <= MAXPACKET - (8 + ii); kk += ii)
--- 1165,1195 ----
exit(2);
}
ii = sscanf(patp,
! "%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x",
&pat[0], &pat[1], &pat[2], &pat[3], &pat[4], &pat[5], &pat[6],
&pat[7], &pat[8], &pat[9], &pat[10], &pat[11], &pat[12],
! &pat[13], &pat[14], &pat[15],
! &pat[16], &pat[17], &pat[18], &pat[19], &pat[20], &pat[21], &pat[22],
! &pat[23], &pat[24], &pat[25], &pat[26], &pat[27], &pat[28],
! &pat[29], &pat[30], &pat[31],
! &pat[32], &pat[33], &pat[34], &pat[35], &pat[36], &pat[37], &pat[38],
! &pat[39], &pat[40], &pat[41], &pat[42], &pat[43], &pat[44],
! &pat[45], &pat[46], &pat[47],
! &pat[48], &pat[49], &pat[50], &pat[51], &pat[52], &pat[53], &pat[54],
! &pat[55], &pat[56], &pat[57], &pat[58], &pat[59], &pat[60],
! &pat[61], &pat[62], &pat[63],
! &pat[64], &pat[65], &pat[66], &pat[67], &pat[68], &pat[69], &pat[70],
! &pat[71], &pat[72], &pat[73], &pat[74], &pat[75], &pat[76],
! &pat[77], &pat[78], &pat[79],
! &pat[80], &pat[81], &pat[82], &pat[83], &pat[84], &pat[85], &pat[86],
! &pat[87], &pat[88], &pat[89], &pat[90], &pat[91], &pat[92],
! &pat[93], &pat[94], &pat[95],
! &pat[96], &pat[97], &pat[98], &pat[99], &pat[100], &pat[101], &pat[102],
! &pat[103], &pat[104], &pat[105], &pat[106], &pat[107], &pat[108],
! &pat[109], &pat[110], &pat[111],
! &pat[112], &pat[113], &pat[114], &pat[115], &pat[116], &pat[117], &pat[118],
! &pat[119], &pat[120], &pat[121], &pat[122], &pat[123], &pat[124],
! &pat[125], &pat[126], &pat[127]);
if (ii > 0)
for (kk = 0; kk <= MAXPACKET - (8 + ii); kk += ii)
#! /bin/bash
# wake on LAN. K.Kodama 1999.11.29
# mac-address file format: ip-address name hw-address
macfile="~/mac-address"
function wake-help(){
echo "wake on LAN"
echo "$0 name"
echo " or"
echo "$0 -a"
echo " to wake up all"
}
function wake-ping(){
gawk 'BEGIN{ ping="~/ping-long"; broadcast="192.168.1.255" }
{
m=$3;gsub(/:/,"",m);magic="ffffffffffff"m m m m m m m m m m m m m m m m
system(ping" -c1 -s 110 -p "magic" "broadcast" >/dev/null 2>/dev/null &")}'
}'
}
if [ "$1" = "-h" -o "$1" = "" ];then
wake-help
elif [ "$1" = "-a" ];then
wake-ping < $macfile
elif grep -qs $1 $macfile ;then
grep $1 $macfile | wake-ping
fi
Kodama's home / tips.