Найти в Дзене

Настройка Linux и установка ПО для sms шлюза

Эта статья - часть инструкции по созданию своего sms шлюза. Вы можете ознакомиться с ней тут - ссылка. В прошлой статье - Установка Linux мы установили Linux Ubuntu Server на ноутбук. В этой статье мы подключимся к нему с другого компьютера в локальной сети и настроим то, что нам необходимо для работы. На наш компьютер мы установим 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, так вы сохраните данные для захода в следующий раз. Потом сможете прос
Оглавление

Эта статья - часть инструкции по созданию своего 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 и сканируем нашу сеть.

-2

В ней мы видим наш сервер, будет то название, которое мы дали при установке Linux.

И внутренний IP адрес - в моем случае это 192.168.1.24, у вас может быть любой другой. Запоминаем его.

Открываем PuTTY и заполняем поле Host Name - вписываем туда этот ip адрес. Порт оставим 22.

-3

Можно вписать в поле Saves Sessions - имя сессии и нажать кнопку SAVE, так вы сохраните данные для захода в следующий раз. Потом сможете просто нажать на сохраненное имя и подключиться к серверу.

Далее нажимаем Open. Если появится окно с предупреждением нажимаем Accept.

-4

Появится окно, в котором будет написано login as:

Сюда вписываем ваш login, username который вы определили во время установки.

Далее жмем enter

Появится новая строка - /ваш login/@/Ваш IP/ password:

Сюда вписываем ваш пароль, жмем ENTER.

Внимание - при вводе пароля на экране ничего не отображается, это нормально для командной строки.

Как пользоваться putty

Чтобы вставить текст в консоль, вам надо сначала скопировать его в буфер обмена (CTRL+C или правой кнопкой - копировать), навести на консоль нажать правой кнопкой мыши. Текст вставится в консоль.

Настройка закрытия крышки ноутбука

Стандартно мой компьютер засыпает при закрытии крышки. Я хочу, чтобы компьютер продолжал работу при закрытой крышке.

В консоль пишем

sudo nano /etc/systemd/logind.conf

Вводим наш пароль от пользователя. Видим:

-5

убираем символ

##

заменяем текст так, чтобы было HandleLidSwitch=ignore

-6

Получается так. Потом нажимаем CTRL+X

Появляется диалог - пишем Y и жмем enter.

Далее вводим в консоль

sudo service systemd-logind restart

Теперь ноутбук не будет засыпать при закрытии крышки.

Настройка статического локального ip адреса для сервера

Проверяем текущий ip адрес

sudo ip a

Выведется что-то типа

-7

Устанавливаем net-tools

sudo apt install net-tools

cd /etc/netplan
dir
-8

пишем

ifconfig

Видим:

-9

Нам требуется название enp1s0

Редактируем настройки

sudo nano /etc/netplan/00-installer-config.yaml

Отобразилось что-то подобное:

-10

у меня вышло так:

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

И отвечаем на вопросы как в скриншоте:

-11

Стартанем 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/пароль

-12

Если вошли, значит - успех!

Подключение модема и настройка

Далее инструкция может разниться, так все зависит от вашего устройства - модема.

Я использую старый, завалявшийся у меня Vodafone MD950

-13

Искать такой же нет никакого смысла, подойдет любой модем

Список совместимых можно посмотреть здесь: https://wammu.eu/phones/

Что интересно, моей модели там нет, но она отлично работает с gammu.

В консоли прописываем

lsusb

Высвечивается что-то подобное:

-14

В вашем случае устройство может называться как-то по другому.

Главная проблема - сейчас устройство видится как флешка, оно и понятно, в ней есть диск с драйверами и если в системе нет драйверов, она отображается как флешка. Проблема с тем, что мы на Linux, а значит нам нужно поменять это поведение, и сделать так, чтобы при включении устройство распознавалось как модем.

В этом нам поможет программа - usb-modeswitch
Устанавливаем ее

sudo apt-get install usb-modeswitch -y

Команда переключения

sudo usb_modeswitch -v 0471 -p 1210 -V 1dbc -P 0005 -M 5553424312345678000000000000061b000000020000000000000000000000

Опять пишем lsusb и видим картину:

-15

Наше устройство теперь EDGE модем.

Отлично.

Установка и настройка Gammu

sudo apt-get install gammu -y

Далее пишем

gammu-detect
-16

Видим что-то подобное. Мое устройство -

[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

Вставляем туда текст, который получили от прошлой команды

-17

Далее - 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

Если видим похожее

-18

не пугаемся, и вписываем в консоль следующее:

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

Появится следующее окно.

-19

Теперь нам нужно внести изменения а настройки.

У меня получилось так - не забываем поменять на свои значения 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 появилась следующая структура.

-20

Перезапускаем 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 мы можем посмотреть отправленное сообщение

-21

Не пугайтесь, текст в поле 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