Купили Mikrotik RouterBoard 750, Mikrotik RouterBoard 750G, Mikrotik RouterBoard RB493. Подключили интернет, настроили всё для раздачи интернета соседям.
Пишем свой авторизатор, чтобы пользователи сами могли включать и отключать доступ в интернет. В качестве языка программирования выберем Python.
Код скрипта:
# -*- coding: CP866 -*-
import socket
from paramiko import SSHClient, AutoAddPolicy
ip_user = socket.gethostbyname(socket.gethostname())
action = raw_input("Открыть доступ? yes/no ")
if action == 'yes':
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect("192.168.4.1", port=22, username="user1", password="1q2w3e")
a_list = "/ip fi ad add address=%s list=nat" % (ip_user)
ssh.exec_command(a_list)
ssh.close()
else:
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect("192.168.4.1", port=22, username="user1", password="1q2w3e")
a_list = "/ip fi ad remove [find address=%s]" % (ip_user)
ssh.exec_command(a_list)
ssh.close()
Разбираем скрипт:
import socket – подключаем модуль socket. Он нам понадобится для определения IP-адреса на компьютере пользователя.
from paramiko import SSHClient, AutoAddPolicy – понадобится для работы с ssh протоколом.
ip_user = socket.gethostbyname(socket.gethostname()) - определяем IP-адрес компьютера, полученное значение присваиваем ip_user.
action = raw_input("Открыть доступ? yes/no ") – создаем переменную action, в которую будет занесено значение, введенное пользователем.
Выполняем проверку
if action == 'yes': - если пользователь ввел yes, то добавляем ip-адрес в Address List
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect("192.168.4.1", port=22, username="user1", password="1q2w3e")
a_list = "/ip fi ad add address=%s list=nat" % (ip_user)
ssh.exec_command(a_list)
ssh.close()
else: - иначе удаляем ip-адрес из Address List.
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect("192.168.4.1", port=22, username="user1", password="1q2w3e")
a_list = "/ip fi ad remove [find address=%s]" % (ip_user)
ssh.exec_command(a_list)
ssh.close()

Рис.1. Проверка скрипта.

Рис.2. Результат работы скрипта.
Скрипт в чистом виде можно применять, если соседей немного, и вы уверенны, что они не будут пакостить, например, не допишут чего-то лишнего. Если пользователей много и вы не уверенны в их порядочности, лучше сделать так, чтобы пользовательский скрипт отправлял данные к другому скрипту, который будет запущен на вашем компьютере. А тот уже будет взаимодействовать с устройствами Mikrotik Routerboard .
Евгений Рудченко специально для ASP24.
Отправить страницу на e-mail