Эта статья - часть инструкции по созданию своего sms шлюза. Вы можете ознакомиться с ней тут - ссылка.
В прошлой статье - Установка Linux мы установили Linux Ubuntu Server на ноутбук.
В этой статье мы подключимся к нему с другого компьютера в локальной сети и настроим то, что нам необходимо для работы.
Подключение по SSH
На наш компьютер мы установим ssh клиент и программу IP Scaner.
Advanced IP Scanner - https://www.advanced-ip-scanner.com/ru/
SSH клиент -Можно использовать любой. К примеру PuTTY https://putty.org.ru/download.html
Запускаем Advanced IP Scanner и сканируем нашу сеть.
В ней мы видим наш сервер, будет то название, которое мы дали при установке Linux.
И внутренний IP адрес - в моем случае это 192.168.1.24, у вас может быть любой другой. Запоминаем его.
Открываем PuTTY и заполняем поле Host Name - вписываем туда этот ip адрес. Порт оставим 22.
Можно вписать в поле Saves Sessions - имя сессии и нажать кнопку SAVE, так вы сохраните данные для захода в следующий раз. Потом сможете просто нажать на сохраненное имя и подключиться к серверу.
Далее нажимаем Open. Если появится окно с предупреждением нажимаем Accept.
Появится окно, в котором будет написано login as:
Сюда вписываем ваш login, username который вы определили во время установки.
Далее жмем enter
Появится новая строка - /ваш login/@/Ваш IP/ password:
Сюда вписываем ваш пароль, жмем ENTER.
Внимание - при вводе пароля на экране ничего не отображается, это нормально для командной строки.
Как пользоваться putty
Чтобы вставить текст в консоль, вам надо сначала скопировать его в буфер обмена (CTRL+C или правой кнопкой - копировать), навести на консоль нажать правой кнопкой мыши. Текст вставится в консоль.
Настройка закрытия крышки ноутбука
Стандартно мой компьютер засыпает при закрытии крышки. Я хочу, чтобы компьютер продолжал работу при закрытой крышке.
В консоль пишем
sudo nano /etc/systemd/logind.conf
Вводим наш пароль от пользователя. Видим:
убираем символ
##
заменяем текст так, чтобы было HandleLidSwitch=ignore
Получается так. Потом нажимаем CTRL+X
Появляется диалог - пишем Y и жмем enter.
Далее вводим в консоль
sudo service systemd-logind restart
Теперь ноутбук не будет засыпать при закрытии крышки.
Настройка статического локального ip адреса для сервера
Проверяем текущий ip адрес
sudo ip a
Выведется что-то типа
Устанавливаем net-tools
sudo apt install net-tools
cd /etc/netplan
dir
пишем
ifconfig
Видим:
Нам требуется название enp1s0
Редактируем настройки
sudo nano /etc/netplan/00-installer-config.yaml
Отобразилось что-то подобное:
у меня вышло так:
network:
ethernets:
enp1s0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.1, 8.8.4.4]
optional: true
version: 2
renderer: networkd
Где enp1s0 - название моего соединения, сетевая карта.
addresses - прописан желаемый ip адрес внутри сети.
gateway4 - ip4 ip адрес вашего роутера. Бывает и 192.168.0.1, смотрите внимательно, какой именно у вас. Advanced IP Scanner вам в помощь.
Далее CTRL+X, далее Y, жмем enter.
Генерация конфигурации с помощью netplan
sudo netplan --debug generate
sudo netplan --debug apply
sudo reboot
Теперь ваш компьютер будет находиться в сети по адресу 192.168.1.100
Соответственно в PuTTY меняем IP адрес и заходим.
Устанавливаем русский язык
Перенастраиваем пакет locales командой:
sudo dpkg-reconfigure locales
В появившейся форме ищем локаль ru_RU.UTF-8 и отмечаем её нажатием пробелом, в результате перед этой локалью появится звёздочка, как показано на изображении ниже. Затем нажимаем Enter и переходим к следующему шагу.
Следующий шаг – выбор локали по умолчанию.
Выбераем английскую en_EN локаль из списка и нажмаем Enter.
Устанавливаем временную зону
sudo dpkg-reconfigure tzdata
Выбираем часть света, потом город.
Нажимаем enter. Проверяем время.
Установка требуемых программ
Нам потребуется:
MYSQL, Gammu, php, PHPmyAdmin
Сначала вводим команду
sudo apt update
sudo apt upgrade
Установка и настройка MySQL
sudo apt-get install mysql-server -y
Далее, чтобы настроить mySQL для безопасной работы пишем
sudo mysql_secure_installation utility
И отвечаем на вопросы как в скриншоте:
Стартанем mySql сервис
sudo systemctl start mysql
И настроим для запуска после перезагрузки
sudo systemctl enable mysql
Установка phpmyadmin
sudo apt-get install phpmyadmin -y
Автоматически за ним потянутся PHP, Apache и пр.
Далее откроется конфигуратор, там выбираем пароли и тп.
Создадим нашего нового пользователя базы данных.
Для этого пишем:
sudo mysql
Далее появится строчка mysql>
Туда впишем следующее, только замените название developer и пароль на ваше.
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'пароль';
GRANT ALL PRIVILEGES ON *.* TO 'developer'@'localhost';
FLUSH PRIVILEGES;
exit
Далее в браузере заходим по адресу, только вписываем ip вашего сервера. У меня это так:
http://192.168.1.8/phpmyadmin/index.php
Для входа используем логин и пароль который только-что создавали.
Для меня это developer/пароль
Если вошли, значит - успех!
Подключение модема и настройка
Далее инструкция может разниться, так все зависит от вашего устройства - модема.
Я использую старый, завалявшийся у меня Vodafone MD950
Искать такой же нет никакого смысла, подойдет любой модем
Список совместимых можно посмотреть здесь: https://wammu.eu/phones/
Что интересно, моей модели там нет, но она отлично работает с gammu.
В консоли прописываем
lsusb
Высвечивается что-то подобное:
В вашем случае устройство может называться как-то по другому.
Главная проблема - сейчас устройство видится как флешка, оно и понятно, в ней есть диск с драйверами и если в системе нет драйверов, она отображается как флешка. Проблема с тем, что мы на Linux, а значит нам нужно поменять это поведение, и сделать так, чтобы при включении устройство распознавалось как модем.
В этом нам поможет программа - usb-modeswitch
Устанавливаем ее
sudo apt-get install usb-modeswitch -y
Команда переключения
sudo usb_modeswitch -v 0471 -p 1210 -V 1dbc -P 0005 -M 5553424312345678000000000000061b000000020000000000000000000000
Опять пишем lsusb и видим картину:
Наше устройство теперь EDGE модем.
Отлично.
Установка и настройка Gammu
sudo apt-get install gammu -y
Далее пишем
gammu-detect
Видим что-то подобное. Мое устройство -
[gammu]
device = /dev/ttyACM0
name = Wisue_Technology EDGE_Modem
connection = at
Нам нужно создать конфигурационный файл. Все места, где можно его создавать описаны здесь https://docs.gammu.org/config/index.html#gammurc
Меня устраивает вот этот путь: /etc/gammurc
Пишем в консоли:
sudo nano /etc/gammurc
Вставляем туда текст, который получили от прошлой команды
Далее - CTRL + X
Далее - Y и жмем кнопку enter
Для проверки работы -
sudo gammu identify
Вам выведется что-то подобное
Device : /dev/ttyACM0
Manufacturer : HOJY
Model : unknown (WYLESS_600)
Firmware : HW:1.0.0.2,SW:1.2.0.15
IMEI : *ваш imei*
SIM IMSI : *ваш IMSI*
Все отлично, мы справились с установкой.
Устанавливаем gammu-smsd
sudo apt-get install gammu-smsd -y
Если видим похожее
не пугаемся, и вписываем в консоль следующее:
sudo sed -i "s|\${CMAKE_INSTALL_FULL_BINDIR}|/usr/bin|" /lib/systemd/system/gammu-smsd.service
sudo apt-get install gammu-smsd -y
Создаем нового пользователя БД - smsd
sudo mysql -u * тут ваш пользователь, которого вы создали при настройке* -p
пример:
sudo mysql -u developer -p
когда появится mysql>
CREATE USER 'smsd'@'localhost' IDENTIIED BY '!!тут пароль!!';
GRANT USAGE ON *.* TO 'smsd'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON `smsd`.* TO 'smsd'@'localhost';
CREATE DATABASE smsd;
FLUSH PRIVILEGES;
exit;
Настраиваем gammu-sms
sudo nano /etc/gammu-smsdrc
Появится следующее окно.
Теперь нам нужно внести изменения а настройки.
У меня получилось так - не забываем поменять на свои значения Port и пароль - password
# Configuration file for Gammu SMS Daemon
# Gammu library configuration, see gammurc(5)
[gammu]
port = /dev/ttyACM0
connection = at
# SMSD configuration, see gammu-smsdrc(5)
[smsd]
service = sql
driver = native_mysql
host = localhost
user = smsd
password = *тут ваш пароль*
database = smsd
logfile = /var/log/smsd
# Increase for debugging information
debuglevel = 0
Нажимаем CTRL+X и Y Потом жмем Enter.
В браузере переходим
http://*тут ваш ip*/phpmyadmin/
Логинимся под developer
В консоли пишем
cd /usr/share/doc/gammu/examples/sql
sudo gunzip mysql.sql.gz
sudo mysql -uroot -p smsd < mysql.sql
В phpnyadmin видим, что в smsd появилась следующая структура.
Перезапускаем gammu-smsd, чтобы настройки вступили в силу.
sudo systemctl restart gammu-smsd
ВНИМАНИЕ! После запуска gammu-smsd, gammu --identify станет выдавать ошибку, это нормально!
Проверяем работоспособность отправки сообщений
В консоли пишем:
sudo gammu-smsd-inject TEXT +*номер телефона получателя* -autolen 10 -text "*тут текст сообщения*"
Пример
sudo gammu-smsd-inject TEXT +79999999999 -autolen 10 -text "Текст отправлен с моего сервера! Круто!"
Сообщение должно прийти.
Также в базе данных через phpmyadmin мы можем посмотреть отправленное сообщение
Не пугайтесь, текст в поле TEXT будет непонятен типа
0041006C006C00200079006F00750072002000620061007300650020006100720065002000620065006C006F006E006700200074006F00200075007300200032
Зато в поле TextDEcoded все будет как надо.
Если все есть - супер. Поздравляю! Мы отправили сообщение с нашей симкарты!
Дело осталось за малым:
Настроить роутер для проброса портов сервера mySQL и далее, настройка DDNS для доступа к бд через внешний источник.
Ссылка на следующую статью - ссылка.
посмотреть логи - grep "$(date +'%a %Y/%m/%d')" /var/log/smsd
cat /var/log/smsd
статус процесса - systemctl status gammu-smsd.service
статус - gammu-detect
перезагрузка - sudo systemctl restart gammu-smsd
конфиг - sudo nano /etc/gammu-smsdrc