Всем привет! Сегодня совсем вкратце поговорим о такой замечательной утилите, как 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Вот и все. Надеюсь все объяснил понятными и доступными словами :) Если что, пишите комментарии.
Ой спасибо тебе мил человек. Все работает :)
ОтветитьУдалитьогонь!!!
ОтветитьУдалитьСпасибо
ОтветитьУдалить