Добавление пользователей при помощи Mikrotik Router OS API PHP |
В этой статье мы рассмотрим, как с помощью Mikrotik Router OS API PHP выполнить добавление пользователей в Mikrotik Routerboard.
Рис.1. Mikrotik Routerboard, раздел PPP Secrets.
До того, как добавить пользователя, мы перейдем в раздел PPP Secrets. Сделаем это, чтобы удостоверится, что в нем пока нет пользователей.
Напишем скрипт:
<?php
require(‘routeros_api.class.php’);
$API = new routeros_api();
if ($API->connect(‘192.168.4.253′, ‘ubnt’, ‘ubnt’))
Разбор скрипта:
<?php
Подключаем файл с классом:
require(‘routeros_api.class.php’);
Создаем объект класса:
$API = new routeros_api();
Соединяемся с устройством:
if ($API->connect(‘192.168.4.253′, ‘ubnt’, ‘ubnt’))
Добавление пользователей при помощи Mikrotik Router OS API PHP|
|
Как обработать данные, извлеченные из Mikrotik Routerboard? |
Мы уже умеем получать данные от устройств Mikrotik Routerboard. Теперь приступим к обработке полученных данных.
Пишем код:
<?php
require(‘routeros_api.class.php’);
$API = new routeros_api();
if ($API->connect(‘192.168.4.253′, ‘ubnt’, ‘ubnt’)) {
print ‘Соединение установлено’;
$API->write(‘/interface/getall’);
$INTERFACE = $API->read(false);
$ARRAY = $API->parse_response($INTERFACE);
print_r($INTERFACE);
print "<br><br>";
print_r($ARRAY);
Разбираем код:
Вызываем метод parse_response, передав в него $INTERFACE для обработки. Результат работы метода поместим в $ARRAY:
$ARRAY = $API->parse_response($INTERFACE);
Выведем полученные и обработанные данные на экран:
print_r($INTERFACE);
print "<br><br>";
print_r($ARRAY);
Рис.1. Значения полученных и обработанных данных.
Как мы видим, полученные данные – это простой массив, который состоит из 46 элементов. В результате обработки мы получили массив, который состоит из 5 элементов и каждый элемент – это ассоциативный массив, к которому можно обращаться по ключам.
Как обработать данные, извлеченные из Mikrotik Routerboard?|
|
Тесты на Ubiquiti AirRouter. Часть вторая (2/2) |
Итак, последний тест. Он же мой любимый – тестирование беспроводных соединений.
Тест №5: Wireless
Тестирование будет проводится в трёх режимах: 802.11b/g (54Мбит – Макс), 802.11b/g/n -20 Mgz (65 Мбит Макс) и 802.11b/g/n -40 Mgz(150 Мбит Макс).
802.11b/g(54Мбит – Макс)
Сетевое устройство Atheros AR5007EG b/g Wireless Network Adapter. Статистика коннекта (информация с роутера):
Рис.1. Тестирование в режиме 802.11b/g (54Мбит – Макс).
Тест скорости:
Скорость составила обычные 2,18 Мбайт/сек * 1024 = 22,32 Мбит/сек. Вообще-то скорость беспроводного Интернета нужно делить минимум пополам. Так что 54Mбит/2=25,5 Mбит/с реальной скорости в пике загрузки – это довольно неплохой результат.
Рис.2. Тест скорости в режиме 802.11b/g (54Мбит – Макс)
Тесты на Ubiquiti AirRouter. Часть вторая (2/2)|
|
Mikrotik Router OS API PHP. Как извлечь данные из Mikrotik Routerboard? |
Мы уже умеем подключаться к Mikrotik Routerboard. В этой статье мы рассмотрим, как извлекать данные из Mikrotik Routerboard.
Рис.1. Mikrotik Routerboard список интерфейсов.
Здесь мы видим данные об интерфейсах. Их можно получить при помощи PHP API.
Рис.2. Данные об интерфейсах в консоли.
Чтобы увидеть информацию об интерфейсах, мы должны в консоли выполнить команду /interface print. Вданном случае, мы вместо пробела используем символ слэш (/interface/print).
Mikrotik Router OS API PHP. Как извлечь данные из Mikrotik Routerboard?|
|
Mikrotik Router OS API connect |
В этой статье мы рассмотрим возможность использования API в работе Mikrotik Router OS. Итак, что же такое API?
Интерфейс программирования приложений (API) — это набор готовых классов, процедур, функций, структур и констант, которые предоставляются приложением (библиотекой, сервисом) для использования во внешних программных продуктах. API
используется программистами с целью написания всевозможных приложений.
Что касаетсяMikrotik Router OS, то он также предоставляет API для взаимодействия с устройствами Mikrotik Routerboard при помощи приложений, которые написаны на различных языках программирования. Для взаимодействия с Mikrotik Router OS при помощи API, из PHP есть готовый класс http://wiki.mikrotik.com/wiki/API_PHP_class#Example_1.
Рис.1. PHP класс для работы с API Mikrotik Router OS.
Для начала мы создадим файл routeros_api.class.php. В него мы поместим классы для взаимодействия с API Mikrotik Router OS.
Кроме того, мы создадим файл router_connect.php. В нем мы напишем свой код.
Mikrotik Router OS API connect|
|
Скрытые таланты Router D-Link DIR-100 Switch. Часть 2 (2/2) |
Итак, сначала прописываем 22-й управляющий VLAN и меняем адрес свитча:
Рис. 11
Нажимаем «Save Settings» — главное, не забыть про «Management VID:». Его лучше выставить сразу, а то потом, скорее всего, придётся сбрасывать устройство кнопкой «Reset» на задней панели.
После чего переходим в браузере по новому адресу 192.168.0.10 и идём в настройку VLAN. Делаем это всё в следующем порядке:
Скрытые таланты Router D-Link DIR-100 Switch. Часть 2 (2/2)|
|
Типы переменных в Mikrotik Router OS |
При работе с
Mikrotik Router OS мы можем встретить такие переменные:
number — целое число;
boolean — логический тип;
string — строка;
ip — IP-адрес;
time — дата и время;
array — массив данных;
nil — тип переменной без значения.
Как определить тип переменной? Это довольно просто.
Рис.1. Mikrotik Router OS, тип переменной number.
:local a 1; :put [:typeof $a];
Типы переменных в Mikrotik Router OS|
|
Тесты на Ubiquiti AirRouter. Часть первая (1/2) |
Тестирование Ubiquiti AirRouter я начал с температуры. У процессора она была довольно высокой: около 75 градусов, что может существенно сократить процессору срок жизни. В единственном найденом обзоре данного устройства вычитал, что после полугода работы он вышел у хозяина из строя. Поэтому я решил придумать туда радиатор: взял со старого Pentium процессора, обрезал его ножовкой по металлу и "доработал напильником". Термопаста, обычная КПТ-8, резинка для денег – не слишком долговечно, но на время теста сойдет, а после можно будет посадить на термоклей.
!Учтите, что данная операция несёт за собой потерю гарантии!
Вот что в итоге получилось:
Рис.1. Результат моих усилий.
Не только держится, но, что является безусловным плюсом, еще и закрывается идеально.
!!!Учтите, что данная операция несёт за собой потерю гарантии!!!
Вот наше железо:
Processor: Atheros MIPS 24KC, 400MHz
DRAM: 32 Mb
Flash: 8 Mb
Connections: 5 x 10/100 Ethernet ports + WiFi 150 Mbit/s in 40 MGz
AirOS firmware: version 5.3.3
Тест №1: Загрузка файлов в один поток (используя протокол FTP).
Тип соединения у моего Интернет-провайдера – РРРоЕ. Я произвел настройку и изменил МАС-адрес (идёт привязка по МАС-у). Роутер без проблем поднял соединение.
Рис.2. РРРоЕ Information.
Как мы видим, UpTime (время, проработанное в On-Line) равняется 9 часов 12 минут 34 секунды. Это значит, что обрывов за ночь не было.
Проверял еще через статический IP-адрес и получение IP-адреса по DHCP – работает так же.
Загрузка. Пример загрузки с Киевского ftp-server-a (до Киева у меня по пакету 100Мбит):
Рис.3. Пример загрузки с Киевского ftp-server-a.
В принципе – очень даже неплохо (как для домашних роутеров).
Тесты на Ubiquiti AirRouter. Часть первая (1/2)|
|
Серверные процессоры – гонка продолжается |
В 2010 году сферу технологических новшеств пополнило значительное количество технологических новшеств. Но, без сомнений, это только начало, а вовсе не предел.
В последние годы на рынке серверных процессоров технологическое и рыночное противостояние только набирает обороты. Каждый год производители выводят на рынок как минимум один, пусть не всегда принципиально новый, процессор. Появление новых моделей двигает вперёд ИТ-рынок, обновляя серверный парк…
Серверные процессоры – гонка продолжается|
|
Акция |
Уважаемые клиенты!
Интернет-магазин ASP24 вместе со своим партнером консалтинговой компанией "Телекон" проводят классную акцию!
Закажите услуги по оформлению лицензии на использование РЧР Украины у компании "Телекон" до 31 декабря 2011г. и получите возможность бесплатно оформить разрешение на первую базовую станцию (оплачиваются лишь официальные платежи).
Кроме этого, напоминаем Вам о постоянной скидке в 5% на услуги компании "Телекон".
Для получения скидки укажите при оформлении заказа промо-код: asp_3112
|
|
Pythonix. Как вывести список пользователей? |
Напишем скрипт на Python, который будет выводить список пользователей.
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import MySQLdb
import mysql_db, sys, os
def f_user_list():
os.system(‘clear’)
cur = mysql_db.db.cursor()
sql = ("SELECT * FROM users")
cur.execute(sql)
users_data = cur.fetchall()
Разбор скрипта:
Производим импортирование модулей:
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import MySQLdb
import mysql_db, sys, os
Теперь создадим функцию f_user_list:
def f_user_list():
os.system(‘clear’) — очищаем экран.
Извлекаем все данные из таблицы users, и заносим их в users_data:
cur = mysql_db.db.cursor()
sql = ("SELECT * FROM users")
cur.execute(sql)
users_data = cur.fetchall()
cur.close()
|
|
Как складывать переменные различных типов с помощью Mikrotik Router OS |
В языках программирования не допускается складывать переменные различных типов.
Вот, к примеру:
Рис.1. Создаем переменные в Python.
На языке программирования Python мы создали две переменные: а и b. Переменная а равняется целому числу, в нашем случае это 1. Переменная b обозначает строку (‘1′).
Воспользуемся оператором print type() и выведем тип двух переменных.
Как мы видим, в результате действия оператора, переменная a имеет тип int, а переменная b – тип str. Теперь попытаемся сложить эти переменные.
Рис.2. Сложение разнотипных переменных в Python.
c = a + b
Наша попытка сложить переменные разного типа увенчалась неудачей.
Как складывать переменные различных типов с помощью Mikrotik Router OS|
|
На складе появились антивандальные ящики |
Антивандальные ящики наконец-то появились у нас нас на складе.
Звоните, заказывайте и получайте их уже на следующий день. Теперь не надо ждать, пока ящик изготовят, ящики уже готовы и ждут установки.
|
Цена : $13.10
|
Цена : $18,13
|
Цена : $46.90
|
|
Цена : $36.42
|
Цена : $45
|
Цена : $52,50
|
|
Цена : $40,12
|
Цена : $46,30
|
Цена: $61,25 |
На складе появились антивандальные ящики
|
|
«Торговцы медью», или Украинский рынок ADSL в 2010 году |
Оборудование ADSL продают многие компании, а объёмы подключений измеряются сотнями тысяч абонентов в год. Но несмотря на конкуренцию со стороны других технологий, перспективы у ADSL в Украине пока всё ещё есть.
Всё большее распространение оптических и беспроводных технологий, не мешает ADSL доминировать на украинском рынке систем высокоскоростного доступа. Такая ситуация продлится по крайней мере ещё несколько лет. Ежегодно в страну завозятся довольно значительные объёмы оборудования, основными потребителями которого являются как интернет-провайдеры так и абоненты, самостоятельно приобретающие модемы. Поставка же оборудования на рынок осуществляется двумя способами — напрямую от производителей либо через дистрибьюторов и дилерские каналы.
Чтобы выяснить состояние украинского рынка ADSL, его структуру и взаимодействие основных сторон бизнеса, а также перспективы на ближайшие годы, мы расспросили наиболее активных участников этого рынка — производителей, дистрибьюторов и провайдеров.
«Торговцы медью», или Украинский рынок ADSL в 2010 году|
|
Из практики недорогого сетестроения |
Рассмотрим настройки базовой станции, которая построена на оборудовании DWL-G700 и Maximus Sektor 2.4-17-120.
Данная точка доступа перешита прошивкой Wive-v0.6.1.zip.
Итак, настройки точки:
/etc/network/wifi/general
#Set ESSID of wirelless Infrastructure Network
iwpriv wlan0 set_mib ssid="ASP24"
#Uncomment and Set prior bssid to connect
#iwpriv wlan0 set_mib bssid2join=000000000000
iwpriv wlan0 set_mib hiddenAP=0
#Set Mode: 8 – Client;16 – AP; 32 – AdHoc
iwpriv wlan0 set_mib opmode=16
#Set Regulatory Domain:
# "3" – 13 channels available, "6" – 14 channels available.
# FCC=1;IC=2;ETSI=3;SPAIN=4;FRANCE=5;MKK=6
iwpriv wlan0 set_mib regdomain=3
#Set Channel here
iwpriv wlan0 set_mib channel=5
#Set Initial Gain: in range 0-7
# It seems to be sens but maybe not. Just test
iwpriv wlan0 set_mib initialGain=3
#Set TransmitPower for CCK(802.11b) modulation
# Please Change it in variable
CCKPOWER=1a
iwpriv wlan0 set_mib TxPowerCCK=`ader $CCKPOWER 14`
#iwpriv wlan0 set_mib TxPowerCCK=1010101010101010101010101010
#Set TransmitPower for OFDM(802.11g) modulation
# Please Change it in variable
OFDMPOWER=1a
iwpriv wlan0 set_mib TxPowerOFDM=`ader $OFDMPOWER 162`
#iwpriv wlan0 set_mib TxPowerOFDM=1010101010101010101010101010101010101010
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010
iwpriv wlan0 set_mib basicrates=1008
iwpriv wlan0 set_mib oprates=1008
iwpriv wlan0 set_mib fixrate=1
iwpriv wlan0 set_mib autorate=1
iwpriv wlan0 set_mib band=2
iwpriv wlan0 set_mib bcnint=100
#RTS/CTS Threshold
iwpriv wlan0 set_mib rtsthres=2346
iwpriv wlan0 set_mib fragthres=2346
iwpriv wlan0 set_mib expired_time=10000
iwpriv wlan0 set_mib dtimperiod=1
iwpriv wlan0 set_mib show_hidden_bss=0
iwpriv wlan0 set_mib preamble=1
iwpriv wlan0 set_mib shortretry=6
iwpriv wlan0 set_mib longretry=6
iwpriv wlan0 set_mib Diversity=0
iwpriv wlan0 set_mib DefaultAnt=0
iwpriv wlan0 set_mib RFChipID=7
iwpriv wlan0 set_mib led_type=7
#G protection
iwpriv wlan0 set_mib disable_protection=0
#For bridged mode set this parameters
# Nat2.5 is technology to change the source MAC to MAC of Wlan-interface
# be carefull it says disabled, so make inverse in your decision
iwpriv wlan0 set_mib nat25_disable=1
# Macclone says all about itself. It just takes MAC of ETHERNET device on other end of line
# and take it for Wlan-interface. be carefull if this enabled it must be one device on a line.
iwpriv wlan0 set_mib macclone_enable=0
iwpriv wlan0 set_mib dhcp_bcst_disable=0
#Block packets between clients connected
# 0 – disable; 1 – block relay;2 – block relay but passup
iwpriv wlan0 set_mib block_relay=0
|
|
Як розділити та направити трафік для UA-IX через перший канал, а решту — через другий канал Інтернету |
Ніби простенька задача: розділити типи трафіку по різним каналам. Однак, тут може виникнути багато проблем. Такі чинники як: провайдер, що не надає BGP або статичних IP, або отримання Інтернет через канали різних провайдерів, що різняться якістю та швидкістю, можуть значно ускладнити вирішення цього питання. Що ж, спробуємо вирішити все за допомогою Mikrotik RouterBoard RB450g (загалом, підійде будь-який пристрій Mikrotik RouterBoard, головне використати Ваше вміння та фантазію).
Отже, на вході маємо Інтернет через 2 канали. Будемо вважати, що обидва канали налаштовані, і, відповідно, наш Mikrotik RouterBoard може ходити в мережу по будь-якому (список мереж UA-IX завантажено до Adress-list).
Переходимо до /ip firewall nat. Тут створюємо правило для першого каналу:
chain=srcnat action=masquerade src-address=172.31.2.2 routing-mark=mitka1 routing-table=tablyca_marshrutyzacii out-interface=interfejs_1
,
src-address=172.31.2.2 – адреса Вашого сервера або підмережі користувачів,
72.31.2.0/24 out-interface= – інтерфейс, через котрий відбувається з’єднання з Інтернет.
Створюємо правило для другого каналу:
chain=srcnat action=masquerade src-address=172.31.2.2 routing-mark=mitka2 routing-table=druga_tablyca_marshrutyzacii out-interface=interfejs_2
routing-mark= – так маркуються пакети, які ми відправляємо в інший канал Інтернет;
routing-table – використаємо іншу таблицю маршрутизації.
Рис.1. Таблиця маршрутизації.
Рис.2. Результат.
Перейдемо до /ip firewall mangle.
Створюємо правило 1:
chain=prerouting action=mark-routing new-routing-mark=mitka1 passthrough=no src-address=172.31.2.0/24 dst-address-list=ua-ix
action=mark-routing – маркування трафіку;
new-routing-mark=mitka1 – мітка;
dst-address-list=ua-ix – мережі призначення;
passthrough=no – це треба зазначити обов’язково, інакше пакет продовжуватиме подорож по правилам навіть у випадку, якщо він підпадає під це правило. Можете спробувати й по-іншому – тоді отримаєте цікавий досвід.
Як розділити та направити трафік для UA-IX через перший канал, а решту — через другий канал Інтернету|
|
Завантаження списку мереж «всередині країни» в Mikrotik RouterBoard |
В цій статті ми розглянемо скрипт, який дасть нам змогу завантажити в Adress-list список мереж «всередині країни». Для прикладу використаємо список мереж UA-IX з сайту http://www.colocall.net/ua/prefixes.txt.
Отже, нам потрібно:
отримати з http://www.colocall.net/ua/prefixes.txt файл із списком мереж;
розбити цей файл на частини для подальшої обробки в Mikrotik RouterBoard;
завантажити файл на Mikrotik RouterBoard;
завантажити готовий список в Adress-list.
Як проводиться завантаження файлу та початкова обробка?
Звернемось до технічної документації Mikrotik RouterBoard. В ній вказано, що в цього обладнаня є певні обмеження на розмір файлу, що читається. Тому ми напишемо відповідний скрипт.
Ця програма написана на PHP. Раз на добу вона оновлюватиме список мереж:
#!/usr/local/bin/php
<?php
Отримуємо список префіксів:
$file = file("http://www.colocall.net/ua/prefixes.txt");
$num = 0;
$g=1;
$tmp=true;
while ($tmp)
$tmp = array_slice;
if {
Кладемо в директорію Вашого веб-сервера:
file_put_contents;
$num++;
}
Кладемо в директорію Вашого веб-сервера:
file_put_contents("/out/pieces.txt", $num-1)
?>
Отже, є сервер з ОС FreeBSD 7.4., на ньому крутиться біллінг… Відповідно піднятий Apache. Скрипт раз на добу викачує список префіксів, розділяє їх на файли відповідного розміру та зберігає у директорії веб-сервера.
Цей скрипт можна також використати як підпрограму для Apache.
Результат:
gw# cd /www/www/bill/out
gw# ls
output0.txt output11.txt output3.txt output6.txt output9.txt
output1.txt output12.txt output4.txt output7.txt pieces.txt
output10.txt output2.txt output5.txt output8.txt
gw#
Далі напишемо 3 скрипта для самого Mikrotik RouterBoard.
Завантаження списку мереж «всередині країни» в Mikrotik RouterBoard|
|
Как получить данные о беспроводных клиентах, подключенных к Mikrotik RouterBoard? |
Рассмотрим такую ситуацию: к Mikrotik Routerboard (например, Mikrotik RouterBoard RB433AH, Mikrotik RouterBoard RB433UAH, Mikrotik RouterBoard RB435G) подключены несколько беспроводных устройств.
Рис.1. Mikrotik Routerboard список подключенных клиентов.
Перейдем на вкладку Registration. Здесь мы видим подключенных клиентов. Информация о них поделена на столбики. Поле Radio Name в первых двух строчках не заполнено, поскольку клиенты используют TP-Link TL-WN321G, TP-Link TL-WN422G. У тех, которые используют устройства Ubiquiti Networks (например, Ubiquiti NanoStation M2, Ubiquiti NanoStation M2 Loco, Ubiquiti Nanostation2), поле Radio Name будет заполнено.
Рис.2. Mikrotik Routerboard Беспроводной клиент General.
Можно извлекать данные об устройствах и использовать их в скриптах.
Как получить данные о беспроводных клиентах, подключенных к Mikrotik RouterBoard?|
|
Рассмотрим скрипт с функцией удаления тарифа для Pythonix |
И еще один скрипт. На этот раз мы будем удалять ненужные тарифы.
Скрипт:
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import MySQLdb
import mysql_db, time
def f_del_tarif(id_tarif):
if raw_input("Вы уверенны что хотите удалить тариф? y/n: ")=="y":
cur = mysql_db.db.cursor()
sql = "DELETE FROM tarifs WHERE id = ‘%s’" % (id_tarif)
cur.execute(sql)
cur.close()
print "33[31m| Тариф удален |33[0m"
time.sleep(1)
return()
else:
print "33[31m| Тариф не удален |33[0m"
time.sleep(1)
return()
f_del_tarif(4)
Разбираем скрипт:
Для начала выполним функцию, которая выводит список тарифов, а также функцию raw_input, принимающую значения, введенные администратором, и помещающую их в переменную id_tarif:
tarif_list.f_tarif_list()
id_tarif = raw_input("Введите ID тарифа который нужно удалить>>> ")
Рис.1. Список тарифов.
Производим импортирование необходимых модулей:
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import MySQLdb
import mysql_db, time
Создаем функцию f_del_tarif. В нее будет передаваться значение id_tarif:
def f_del_tarif(id_tarif):
Выводим вот такое сообщение: "Вы уверенны, что хотите удалить тариф?"
if raw_input("Вы уверенны, что хотите удалить тариф? y/n: ")=="y":
Рис.2. Подтверждение удаления.
Рассмотрим скрипт с функцией удаления тарифа для Pythonix|
|
«Зеленые» технологии в ЦОД — а может, будущее уже наступило? |
• «СЕТИ И БИЗНЕС» • №2 (57) 2011 •
Применение энергии ядерного распада и сжигание углеводородов даёт сегодня 99% всей вырабатываемой электроэнергии в мире. Но вокруг достаточно и альтернативных источников — ветер, вода, земля… Всё это может как существенно дополнить так и заменить традиционные источники энергии.
Тематика «зеленых» технологий, в свете кризисных явлений и экологический катастроф, затрагивается свсё чаще и чаще. И в самом деле, почему бы не задействовать «бесплатные» ресурсы природы или не использовать энергоэффективное оборудование для получения полезной тепловой или электрической энергии? На данный момент доля альтернативных источников возобновляемой энергии не превышает 1% от мировой выработки. Однако в мире уже внедрено множество масштабных проектов на базе самых различных технологий. Тем не менее каждый подход к организации «зеленых» источников энергии имеет свои технологические особенности. Существенным недостатком экологически чистых источников энергии является ограниченность области их применения. То есть, например, пользу от геотермальных источников можно получать, только установив соответствующее оборудование в непосредственной близости от них, ветряные электростанции требуют больших продуваемых просторов, а солнечные — стабильной безоблачной погоды…
«Зеленые» технологии в ЦОД — а может, будущее уже наступило?|
|