Всем привет! Сегодня совсем вкратце поговорим о такой замечательной утилите, как Iperf. Что это и с чем ее едят можете почитать тут :) :
В официальном репозитории Ubuntu 14.04 доступна как старая (вторая) так и новая (третья) версии Iperf.
root@zabbix1:/home/sysop# apt-cache showpkg iperf
Package: iperf
Versions:
2.0.5-3 (/var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages
MD5: 1b25d29ae979d65c1a67cf08177ba875
Description Language: en
File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty_universe_i18n_Translation-en
MD5: 1b25d29ae979d65c1a67cf08177ba875
Reverse Depends:
iperf:i386,iperf
mininet,iperf
bwctl-server,iperf
Dependencies:
2.0.5-3 - libc6 (2 2.15) libgcc1 (2 1:4.1.1) libstdc++6 (2 4.1.1) iperf:i386 (0 (null))
Provides:
2.0.5-3 -
Reverse Provides:
root@zabbix1:/home/sysop# apt-cache showpkg iperf3
Package: iperf3
Versions:
3.0.7-1~ubuntu14.04.1 (/var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_binary-amd64_Packages)
Description Language:
File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_binary-amd64_Packages
MD5: 868f6472f9c9d19fbddc8629a2bc01a5
Description Language: en
File: /var/lib/apt/lists/ru.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_i18n_Translation-en
MD5: 868f6472f9c9d19fbddc8629a2bc01a5
Reverse Depends:
iperf3:i386,iperf3
Dependencies:
3.0.7-1~ubuntu14.04.1 - libc6 (2 2.2.5) libiperf0 (0 (null)) iperf3:i386 (0 (null))
Provides:
3.0.7-1~ubuntu14.04.1 -
Reverse Provides:
В данной статье я расскажу про установку именно второй версии. Сначала как обычно обновим пакеты.sudo apt-get update sudo apt-get upgradeТеперь собственно устанавливаем вторую версию Iperf.
sudo apt-get install iperf
root@zabbix1:/home/sysop# iperf -v
iperf version 2.0.5 (08 Jul 2010) pthread
Для проверки работоспособности iperf в качестве клиента, протестируем скорость нашего интернет-канала, используя публично доступный сервер. Вот тут есть список.
root@zabbix1:/home/sysop# iperf -c ping.online.net ------------------------------------------------------------ Client connecting to ping.online.net, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 172.20.0.25 port 47033 connected with 62.210.18.40 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 66.0 MBytes 55.2 Mbits/secКак видно, все работает. Далее запустим Iperf в качестве демона. Для этого используем команду, приведенную ниже.
root@zabbix1:/home/sysop# iperf -s -D ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ Running Iperf Server as a daemon The Iperf daemon process ID : 22996Убить демона соответственно можно следующей командой.
root@zabbix1:/home/sysop# kill -9 PID 22996 bash: kill: PID: arguments must be process or job IDsА теперь пойдем немного дальше. Лично меня не устраивает, что нужно каждый раз при перезагрузке сервера зайти в консоль и запустить Iperf. Используя за основу скрипт от Zabbix-агента (/etc/init.d/zabbix-agent), был создан скрипт для Iperf. А немного покопавшись в интернете, нашел способ логирования работы серевера Iperf. Ниже итоговый скрипт.
#! /bin/sh
### BEGIN INIT INFO
# Provides: iperf
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop iperf
### END INIT INFO
set -e
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Server Iperf"
NAME=iperf
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-s --reportstyle C"
test -x $DAEMON || exit 0
PID=/var/run/$NAME.pid
RETRY=15
# define LSB log_* functions.
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting $DESC"
start-stop-daemon --start --quiet -m --pidfile $PID --exec $DAEMON -- $DAEMON_ARGS >> /var/log/iperf.log &
case "$?" in
0) log_end_msg 0 ;;
*) log_end_msg 1; exit 1 ;;
esac
;;
stop)
log_daemon_msg "Stopping $DESC"
start-stop-daemon --oknodo --stop --pidfile $PID --retry $RETRY
case "$?" in
0) log_end_msg 0 ;;
*) log_end_msg 1; exit 1 ;;
esac
;;
status)
status_of_proc -p "$PID" "$DAEMON" "$NAME" && exit 0 || exit $?
;;
restart|force-reload)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Создаем файл /etc/init.d/iperf, копируем в него скрипт и исполняемым.chmod +x /etc/init.d/iperfНиже приведены команды запуска, проверки статуса и остановки сервиса Iperf.
root@zabbix1:/home/sysop# sudo /etc/init.d/iperf start * Starting Server Iperf root@zabbix1:/home/sysop# sudo /etc/init.d/iperf status * iperf is running root@zabbix1:/home/sysop# sudo /etc/init.d/iperf stop * Stopping Server IperfДля просмотра логов работы Iperf можно использовать следующие команды
tail -f /var/log/iperf.log cat /var/log/iperf.logДобавим Iperf в автозагрузку.
root@zabbix1:/home/sysop# update-rc.d iperf defaults Adding system startup for /etc/init.d/iperf ... /etc/rc0.d/K20iperf -> ../init.d/iperf /etc/rc1.d/K20iperf -> ../init.d/iperf /etc/rc6.d/K20iperf -> ../init.d/iperf /etc/rc2.d/S20iperf -> ../init.d/iperf /etc/rc3.d/S20iperf -> ../init.d/iperf /etc/rc4.d/S20iperf -> ../init.d/iperf /etc/rc5.d/S20iperf -> ../init.d/iperfДля удаления из автозапуска скрипта выполните следующую команду
root@zabbix1:/home/sysop# update-rc.d -f iperf remove Removing any system startup links for /etc/init.d/iperf ... /etc/rc0.d/K20iperf /etc/rc1.d/K20iperf /etc/rc2.d/S20iperf /etc/rc3.d/S20iperf /etc/rc4.d/S20iperf /etc/rc5.d/S20iperf /etc/rc6.d/K20iperfВот и все. Надеюсь все объяснил понятными и доступными словами :) Если что, пишите комментарии.
Ой спасибо тебе мил человек. Все работает :)
ОтветитьУдалитьогонь!!!
ОтветитьУдалитьСпасибо
ОтветитьУдалить