>-----Original Message-----
>From: Phil Newcombe [mailto:[EMAIL PROTECTED]
>Sent: Wednesday, November 12, 2003 10:27 PM
>To: [EMAIL PROTECTED]
>Subject: [newbie] mirror speed checker
>
>
>Hi all.
>
>Here's a bash script I found looking for something
that would poll
>(ping) Mandrake mirrors and return the result rated
by speed like
>apt-netselect does in Debian. I hacked it up a bit
to make it
>work with
>the mirror list (README_mirrors) and I'm no guru
so.....
I probably should've tested it before my orginal post
to this thread. Oh well. I've run into a problem.
This is what I get when I run the script:
tmp]$ sh cheker README.mirrors
Testing tr: invalid option -- n
Try `tr --help' for more information.
cheker: line 69: syntax error near unexpected token
`newline'
cheker: line 69: ` then grep "rtt"
$tmpdir/ping$$_$h | cut -d"/" -f 5 | tr "\n" " " > '
This is rather confusing since tr has the valid option
of "\n". Here's a copy of the script below,
TIA,
Tango
###########################################
#!/bin/sh
# sort_mirrors_by_speed by A.Mennucci Nov 97
#
# this program is subject to the
# GNU general public license
#
# this program will scan the file in $1 using
# grep "\.[a-zA-Z]*:" $1 | awk '{print $1}'
# to find mirror site host names.
#
# the string before the : character is considered
to be a
# mirror site host name
#
# Mirror sites are pinged and statistics are
collected and sorted #
if [ "$1" = "-h" -o "$1" = "--help" ] ; then
echo Usage: $0 mirrorfile
echo " Argument must be the file README.mirrors "
echo " containing a list of debian mirrors."
echo " This program will ping all mirrors with 4
packets"
echo " to test their speed and reliability, and then
will " echo " sort the result, put it in file
mirrors_by_speed and show the
best."
exit 0
fi
tmpdir=~/tmp
# warning: using the directory /tmp and running this
script
# as root is a potential security problem
if ! [ -w $tmpdir ] ; then
echo $0 ERROR dir $tmpdir is not writable
echo please create it if it does not exist
exit 1
fi
if [ ! -r "$1" -o "$1" = "" ] ; then
echo $0 ERROR Give as argument the file
README.mirrors
echo " containing a list of debian mirrors"
exit 1
fi
if [ -r mirrors_by_speed ] ; then
echo $0 ERROR the file mirrors_by_speed already
exists
exit 1
fi
#touch $tmpdir/mirrors_by_speed
n=0
echo -n "Testing "
grep "[a-zA-Z]" $1 | awk '{print $1}' | wc --lines |
tr "\n" " " echo " debian mirror sites for speed and
reliability." echo -n "Tests done : "
#for i in ` grep "[a-zA-Z]*:" $1 | awk '{print $1}' `
;
for i in `grep "[a-z]*" $1 | cut -d"/" -f 1 | awk
'{print $1}' ` ; do
n=`expr $n + 1 `
(
h=$n
#echo TEST $h for $i
#if ping -c 6 `echo "$i" | cut -d: -f 1` >
$tmpdir/ping$$_$h;
if ping -c 6 `echo "$i"` > $tmpdir/ping$$_$h;
then grep "rtt" $tmpdir/ping$$_$h | cut -d"/" -f 5
| tr "\n" " " >
$tmpdir/mirrors_by_speed_$h
echo -n " ms AVERAGE ," >>
$tmpdir/mirrors_by_speed_$h
grep "received" $tmpdir/ping$$_$h | cut -d"," -f 3
| tr "\n" "," >>
$tmpdir/mirrors_by_speed_$h
echo " SITE $i" >> $tmpdir/mirrors_by_speed_$h
#cat $tmpdir/mirrors_by_speed_$h
cat $tmpdir/mirrors_by_speed_$h >>
mirrors_by_speed
rm $tmpdir/mirrors_by_speed_$h
fi
rm $tmpdir/ping$$_$h
echo -n "$h "
) &
# we do not want to flood the net; we test 30 sites
at a time
# then we wait 8 seconds so that most of the pings
will be done
if [ `expr $n % 30 ` = 0 ] ; then sleep 8 ; fi
done
wait
echo "."
echo "Fastest mirrors are: "
mv mirrors_by_speed mirrors_by_speed~
sort -n mirrors_by_speed~ > mirrors_by_speed
head mirrors_by_speed
# end of scriptd~
sort -n mirrors_by_speed~ > mirrors_by_speed
head mirrors_by_speed
# end of scriptript
__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree
Want to buy your Pack or Services from MandrakeSoft?
Go to http://www.mandrakestore.com