И результатом этих мучений стали 2 серта и статус консультанта по микротику. Так что если уж вы это поделие купили, обращайтесь
В каждой шутке есть доля шутки
Настройку микротиков берём, мальчики, роутинг, свитчинг, туннелинг, приоритеты вешаем, уши развешиванием, голос пропускаем, пидорасов отшиваем. Выезд, апартаменты, есть подружка.
Дёшево беру, хорошо обслуживаю, бесплатно советую, платно консультирую.
Айписеки без гомосеков; Всю правду скажу, всю жизнь расскажу: где был, с кем жил, как живёт, и где пакет умрет
#humor #mikrotik
Настройку микротиков берём, мальчики, роутинг, свитчинг, туннелинг, приоритеты вешаем, уши развешиванием, голос пропускаем, пидорасов отшиваем. Выезд, апартаменты, есть подружка.
Дёшево беру, хорошо обслуживаю, бесплатно советую, платно консультирую.
Айписеки без гомосеков; Всю правду скажу, всю жизнь расскажу: где был, с кем жил, как живёт, и где пакет умрет
#humor #mikrotik
Что делать, если нужно подключиться к MikroTik из linux по mac, но без winbox в wine?
Ситуации, как известно, бывают разные. Допустим, вы случайно отломали себе доступ к микротику по IP: снесли маршрут, прикрыли управление не с той стороны, просто скинули его в blank. При этом у вас, как у меня, например, просто нет винды. А Winbox в wine то соседей не видит, то по маку подключается с 10 попытки, то вообще отваливается. Кстати, когда все-таки удается подключиться, в логах виднеется вот это вот:
Оказывается, давно написан инструмент mactelnet-client под Linux, так что задача сводится к:
#mikrotik
Ситуации, как известно, бывают разные. Допустим, вы случайно отломали себе доступ к микротику по IP: снесли маршрут, прикрыли управление не с той стороны, просто скинули его в blank. При этом у вас, как у меня, например, просто нет винды. А Winbox в wine то соседей не видит, то по маку подключается с 10 попытки, то вообще отваливается. Кстати, когда все-таки удается подключиться, в логах виднеется вот это вот:
system,info,account user admin logged in from FF:FF:FF:FF:FF:FF via winboxА что делать, если мы учудили отстрел яиц на удаленной площадке, где есть только сервера, нет дроидов, которые могли бы подоткнуться ноутом с винбоксом и тимвьювером?
Оказывается, давно написан инструмент mactelnet-client под Linux, так что задача сводится к:
apt install mactelnet-clientИ все! Кстати, есть еще и mactelnet-server, несложно догадаться, когда он может оказаться полезным ;)
mactelnet -l #обнаружение роутеров
mactelnet 0:xx:xx:xx:xx:xx #коннект к нужному роутеру
#mikrotik
Прямой набор номера из IVR на другой станции
Обратился тут коллега с вопросом: есть астер c FreePBX, есть другая, старая станция. Между собой станции подружены по сипу. На некоем номере, заведенном на астер, настроен IVR с возможностью прямого набора внутренних номеров. Что не удивительно, набираются напрямую только номера астериска, но никак не старой станции. Для примера, будем считать, что на астере у нас пул 2ХХ, а на, допустим, панасонике - 1ХХ.
Задача формулируется так: обеспечить возможность прямого набора номеров 1XX из голосового меню Asterisk.
Посидели, поколупались в контекстах, и выяснилось, что нет ничего проще! Достаточно только внести в extensions_custom.conf следующее
#asterisk
Обратился тут коллега с вопросом: есть астер c FreePBX, есть другая, старая станция. Между собой станции подружены по сипу. На некоем номере, заведенном на астер, настроен IVR с возможностью прямого набора внутренних номеров. Что не удивительно, набираются напрямую только номера астериска, но никак не старой станции. Для примера, будем считать, что на астере у нас пул 2ХХ, а на, допустим, панасонике - 1ХХ.
Задача формулируется так: обеспечить возможность прямого набора номеров 1XX из голосового меню Asterisk.
Посидели, поколупались в контекстах, и выяснилось, что нет ничего проще! Достаточно только внести в extensions_custom.conf следующее
[from-did-direct-ivr-custom]где вместо trunk указать имя пира, соединяющего две станции
exten => _1XX,1,Dial(SIP/trunk/${EXTEN})
#asterisk
Как настроить 2500 микротиков по всей стране и поддерживать на них актуальный конфиг, когда у падаванов на местах - лапки
Итак, постановка задачи:
* Имеется порядка 2500 географически разнесенных торговых точек. В каждой точке установлен т.н. Главный компьютер, он же ПК заведующего, кассы на базе персональных компьютеров под управлением Windows, система видеонаблюдения.
* Сеть одноранговая, 192.168.0.0/24, адрес шлюза и ДНС, он же роутер, 192.168.0.254, адрес главного компьютера - 192.168.0.1. Подключение к Интернет не стандартизировано.
* Необходимо обеспечить доступ главного компьютера в интернет без ограничений, остальным устройствам в сети предоставить доступ только на заранее известный список ресурсов. Кроме того, требуется обеспечить возможность удаленного управления каждым роутером в отдельности, а также возможность массовой настройки всех устройств, например, для добавления нового ресурса в список разрешенных.
* Постепенную замену всех установленных роутеров на MikroTik hAP ac lite необходимо произвести силами региональных техников, не знакомых с RouterOS. Предоставление доступа к настроенным роутерам местному персоналу по умолчанию не предполагается.
Взяли python в зубы и за три дня набыдлокодили. Структурно вышло вот так:
* Для первичной настройки роутера разработана консольная программа, которая в доступной для эникея низкой квалификации форме запросит параметры подключения к Интернет и номер торговой точки. После этого конфигурация маршрутизатора происходит в автоматическом режиме
* Для удаленного управления устройствами поднимается VPN-туннель до центрального офиса
* В офисе установлен и настроен VPN-сервер
* Параметры подключения(логин и пароль) генерируются для каждого устройства как средствами программы настройки, так и на стороне сервера. IP-адрес на VPN-интерфейсе ассоциирован с номером торговой точки по следующему правилу: номер торговой точки приводится в 4-значный hex, который разделяется на 2 октета, и каждый из них возвращается в dec. Пример: точка №500. hex(500)=01f4, dec(01)=1, dec(f4)=244. Таким образом, два последних октета адреса на PPTP интерфейсе будет 1.244
* На серверной стороне разработан скрипт, осуществляющий массовое применение изменений. Для каждого устройства выполняются только те команды, которые еще не были применены для него, то есть контролируется версионность.
за подробностями и кодом - в wiki или vk:
http://pubwiki.mindsellers.ru/index.php/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%86%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D1%80%D0%BA%D0%BE%D0%BC_MikroTik
vk.com/@mindsellers-sistema-centralizovannogo-upravleniya-parkom-mikrotik
#python #mikrotik #vpn
Итак, постановка задачи:
* Имеется порядка 2500 географически разнесенных торговых точек. В каждой точке установлен т.н. Главный компьютер, он же ПК заведующего, кассы на базе персональных компьютеров под управлением Windows, система видеонаблюдения.
* Сеть одноранговая, 192.168.0.0/24, адрес шлюза и ДНС, он же роутер, 192.168.0.254, адрес главного компьютера - 192.168.0.1. Подключение к Интернет не стандартизировано.
* Необходимо обеспечить доступ главного компьютера в интернет без ограничений, остальным устройствам в сети предоставить доступ только на заранее известный список ресурсов. Кроме того, требуется обеспечить возможность удаленного управления каждым роутером в отдельности, а также возможность массовой настройки всех устройств, например, для добавления нового ресурса в список разрешенных.
* Постепенную замену всех установленных роутеров на MikroTik hAP ac lite необходимо произвести силами региональных техников, не знакомых с RouterOS. Предоставление доступа к настроенным роутерам местному персоналу по умолчанию не предполагается.
Взяли python в зубы и за три дня набыдлокодили. Структурно вышло вот так:
* Для первичной настройки роутера разработана консольная программа, которая в доступной для эникея низкой квалификации форме запросит параметры подключения к Интернет и номер торговой точки. После этого конфигурация маршрутизатора происходит в автоматическом режиме
* Для удаленного управления устройствами поднимается VPN-туннель до центрального офиса
* В офисе установлен и настроен VPN-сервер
* Параметры подключения(логин и пароль) генерируются для каждого устройства как средствами программы настройки, так и на стороне сервера. IP-адрес на VPN-интерфейсе ассоциирован с номером торговой точки по следующему правилу: номер торговой точки приводится в 4-значный hex, который разделяется на 2 октета, и каждый из них возвращается в dec. Пример: точка №500. hex(500)=01f4, dec(01)=1, dec(f4)=244. Таким образом, два последних октета адреса на PPTP интерфейсе будет 1.244
* На серверной стороне разработан скрипт, осуществляющий массовое применение изменений. Для каждого устройства выполняются только те команды, которые еще не были применены для него, то есть контролируется версионность.
за подробностями и кодом - в wiki или vk:
http://pubwiki.mindsellers.ru/index.php/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%86%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D1%80%D0%BA%D0%BE%D0%BC_MikroTik
vk.com/@mindsellers-sistema-centralizovannogo-upravleniya-parkom-mikrotik
#python #mikrotik #vpn
VK
Система централизованного управления парком MikroTik
Разработка клиентской части ведется на Windows с корректно установленным Python, pip и любым подходящим редактором.
Когда надо валить
Не знаю, как вы, коллеги, но из всех разных параметров, в рамках которых можно оценить работу, я всегда на первое место ставлю развитие.
Недавно прочел и принял на вооружение фразу 'пакет увольнения' - что именно вы возьмёте с собой, когда по тем или иным причинам решите сменить работу: какой опыт, какие новые знания и умения. Что вы положите в свой багаж, который важнее любого резюме.
Иные могут сидеть на жопе ровно по 25 лет, развиваясь исключительно из-под палки и только в интересах текущего работодателя. Но можно ли назвать таковых Админами? Вопрос дискуссионный, но по моему глубокому убеждению - нельзя. Админ, да и вообще любой специалист ИТ, в первую очередь - исследователь, ведь комьюнити ежедневно создаёт огромное количество новых средств и возможностей. И разве не в том, чтобы быстро и качественно решить задачу бизнеса, используя оптимальное на данный момент техническое средство - наша с вами основная задача?
И кем мы, коллеги, становимся в ситуации, когда годами применяем одни и те же методы, действуем по указке старых, сознательно отказавшихся от развития пердунов? Да в таких же стариков, которые ходят на работу за зарплатой, прикрывают свою жопу бессмысленными бумажками, убивающими всякое желание развиваться у молодых!
В угоду стабильности, зарплаты, собственной лени, каждый из нас может попасть в такую ловушку, и из админов превратиться в техников, работающих без минимальной отдачи.
Вот именно в тот момент, когда вы понимаете, что уже 2-3 месяца ничего не положили себе в багаж, УВОЛЬНЯЙТЕСЬ! Пусть на чуть меньшие деньги, менее удобный график, но с перспективой. И перспективой, в первую очередь, личного развития.
Но это только мое мнение.
#imho
Не знаю, как вы, коллеги, но из всех разных параметров, в рамках которых можно оценить работу, я всегда на первое место ставлю развитие.
Недавно прочел и принял на вооружение фразу 'пакет увольнения' - что именно вы возьмёте с собой, когда по тем или иным причинам решите сменить работу: какой опыт, какие новые знания и умения. Что вы положите в свой багаж, который важнее любого резюме.
Иные могут сидеть на жопе ровно по 25 лет, развиваясь исключительно из-под палки и только в интересах текущего работодателя. Но можно ли назвать таковых Админами? Вопрос дискуссионный, но по моему глубокому убеждению - нельзя. Админ, да и вообще любой специалист ИТ, в первую очередь - исследователь, ведь комьюнити ежедневно создаёт огромное количество новых средств и возможностей. И разве не в том, чтобы быстро и качественно решить задачу бизнеса, используя оптимальное на данный момент техническое средство - наша с вами основная задача?
И кем мы, коллеги, становимся в ситуации, когда годами применяем одни и те же методы, действуем по указке старых, сознательно отказавшихся от развития пердунов? Да в таких же стариков, которые ходят на работу за зарплатой, прикрывают свою жопу бессмысленными бумажками, убивающими всякое желание развиваться у молодых!
В угоду стабильности, зарплаты, собственной лени, каждый из нас может попасть в такую ловушку, и из админов превратиться в техников, работающих без минимальной отдачи.
Вот именно в тот момент, когда вы понимаете, что уже 2-3 месяца ничего не положили себе в багаж, УВОЛЬНЯЙТЕСЬ! Пусть на чуть меньшие деньги, менее удобный график, но с перспективой. И перспективой, в первую очередь, личного развития.
Но это только мое мнение.
#imho
Простой интерфейс отправки SMS через шлюз NeoGate
Как известно, GSM-шлюзы NeoGate предоставляют возможность отправки через них sms средствами собственной API. Включается она на соответствующей закладке в интерфейсе самого шлюза. Рассмотрим простой пример: для начала на "чистый" apache добавим вот такие строки в /etc/apache2/sites-available/000-default.conf:
Дополнительно нужно вообще включить поддержку cgi командой
Кроме того, я решил логировать отправки смс в базу данных Mysql. Но для этого ее нужно сначала создать:
```
CREATE DATABASE
use sms;
CREATE TABLE
UNIQUE KEY
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
GRANT ALL PRIVILEGES ON sms.* TO 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
```
На этом все, можно работать!
#python #asterisk
Как известно, GSM-шлюзы NeoGate предоставляют возможность отправки через них sms средствами собственной API. Включается она на соответствующей закладке в интерфейсе самого шлюза. Рассмотрим простой пример: для начала на "чистый" apache добавим вот такие строки в /etc/apache2/sites-available/000-default.conf:
ScriptAlias "/cgi-bin/" "/var/www/html/cgi-bin/"Добавляем, естественно, перед строкой </VirtualHost>
<Directory "/var/www/html/cgi-bin">
AllowOverride None
Options +ExecCGI +MultiViews +SymLinksIfOwnerMatch +Includes +Multiviews
Order allow,deny
Allow from all
AddHandler cgi-script .py
AddHandler cgi-script .cgi
AddHandler wsgi-script .wsgi
</Directory>
<Directory /var/www/html>
Options +ExecCGI
AddHandler cgi-script .py
</Directory>
Дополнительно нужно вообще включить поддержку cgi командой
a2enmod cgiПерезапускаем apache, и делаем простенькую index.html:
<!DOCTYPE HTML>Создаем каталог /var/www/html/cgi-bin и в нем скрипт send.py:
<html>
<head>
<meta charset="utf-8">
<title>Отправка SMS</title>
</head>
<body>
<table border="1">
<form action="/cgi-bin/send.py">
<h4>Номер телефона</h4><input type="tel" name="num">
<h4>Текст сообщения</h4><textarea name="text"></textarea>
<br><br><button type="submit">Отправить!</button>
</form>
</table>
</body>
</html>
#!/usr/bin/env pythonРазберем строку отправки:
# -*- coding: utf-8 -*-
import cgi
import os
import pymysql
from requests import get
form = cgi.FieldStorage()
num = form.getfirst('num') or ''
text = form.getfirst('text') or ''
print("Content-type: text/html\n")
print("""<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>SMS</title>
</head>
<body>
""")
ip=cgi.escape(os.environ["REMOTE_ADDR"]) #получаем IP
connect=pymysql.connect(host="127.0.0.1", user="user", passwd="pass", db="sms")
cursor=connect.cursor()
sql="insert into sms (ip,num,text) values ('"+str(ip)+"','"+str(num)+"','"+text+"')"
cursor.execute(sql)
connect.commit()
connect.close()
if not num.isdigit() or not len(num)==11: #Проверяем формат номера
print "Неверный формат номера!!!<br>"
print "<a href='../index.html'>Обратно</a>"
else:
r=get('http://192.168.12.12/cgi/WebCGI?1500101=account=apiuser&password=apipass&port=6&destination='+num+'&content='+text) #делаем запрос
if r.status_code==200: #обрабатываем статус
print "Сообщение отправлено<br>"
print "<a href='../index.html'>Обратно</a>"
else:
print "Возникла ошибка, попробуйте еще раз<br>"
print "<a href='../index.html'>Обратно</a>"
r=get('http://192.168.12.12/cgi/WebCGI?1500101=account=apiuser&password=apipass&port=6&destination='+num+'&content='+text)Здесь мы задаем ip шлюза, логин и пароль от API, а также порт, через который нужно отправить смс.
Кроме того, я решил логировать отправки смс в базу данных Mysql. Но для этого ее нужно сначала создать:
```
CREATE DATABASE
sms
/*!40100 DEFAULT CHARACTER SET utf8 */use sms;
CREATE TABLE
sms
(date
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,ip
varchar(20) NOT NULL,num
varchar(11) NOT NULL,text
varchar(500) NOT NULL,UNIQUE KEY
date
(date
,ip
,num
,text
)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
GRANT ALL PRIVILEGES ON sms.* TO 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
```
На этом все, можно работать!
#python #asterisk