ProxMox — проброс USB-модема в LXC контейнер с последующе переадресацией СМС в телеграмм канал

1. Проброс USB-модема в LXC контейнер

Вводные данные. Есть Модем от МТС который определяется как 12d1:1507 Huawei Technologies Co., Ltd. Modem. Хост сервер имя — virt-srv-1, гостевой контейнер ubuntu 22.04 под именем web ID 102.

И так, начнем с того что нам нужно на хосте заставить модем перейти из режима cd-rom перейти в режим модема и сетевой карты. Для этого подключаемся в оболочке сервера virt-srv-1, устанавливаем usb-modeswitch и переключаем модем в нужный нам режим:

root@virt-srv-1:~# apt install usb-modeswitch

root@virt-srv-1:~# usb_modeswitch -J -v 12d1 -p 15e7

В целом можно было просто передернуть модем, но мне было впадлу идти в серверную)))).
Далее наш модем начнет определяться как Bus 001 Device 007: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
Это то что нам было нужно

После этого проверяем появились ли 2 новых устройства и какая у них «группа»:

root@virt-srv-1:~# ls -al /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 0 апр 12 11:08 /dev/ttyUSB0
root@virt-srv-1:~# ls -al /dev/ttyUSB1
crw-rw-rw- 1 root dialout 188, 1 апр 11 12:39 /dev/ttyUSB1

Итак они появились и группа у них 188. Пробрасываем их в контентейнер.
Для этого ищем конфиг контейнера по его ID. У меня это 102 и находиться он /etc/pve/nodes/virt-srv-1/lxc/102.conf

root@virt-srv-1:~# nano /etc/pve/nodes/virt-srv-1/lxc/102.conf

arch: amd64
cores: 2
features: nesting=1
hostname: web
memory: 2048
net0: name=eth0,bridge=vmbr0,hwaddr=00:00:00:00:00:00,ip=dhcp,type=veth
onboot: 1
ostype: ubuntu
rootfs: local:102/vm-102-disk-0.raw,size=20G
swap: 512
unprivileged: 1
#ВОТ это нужно добавить!!!!
lxc.cgroup.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file

lxc.cgroup.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file

Нужно туда добавить. Далее добавляем разрешение на чтение и запись для этих устройств

root@virt-srv-1:~# chmod o+rw /dev/ttyUSB0

root@virt-srv-1:~# chmod o+rw /dev/ttyUSB1

В целом первый этап закончен и можем переходить в виртуальную машину.

Прием сообщений с модема. Установка Gammu

В целом в настройке мне помогла вот эта статья . ТАм есть ШАГ 2. с него настройки я скопировал в целом так. Устанавливаем gammu и смотрим на каком порту модем:

root@web:~# apt install gammu gammu-smsd

root@web:~# gammu identify
Device               : /dev/ttyUSB0
Manufacturer         : Huawei
Model                : E303 (E303)
Firmware             : 21.157.01.00.199
IMEI                 : 860000000000619
SIM IMSI             : 230000000000006

Создадим теперь конфигурационный файл со следующим содержимым и сохраним его в папке /etc/gammurc:

[gammu]
device = /dev/ttyUSB0
name = Bob
connection = at
logfile = /var/log/gammu.log

[smsd]
service = files
logfile = syslog
#PIN = 1234
# Увеличьте значение для получения отладочной информации
debuglevel = 0
# Пути, по которым хранятся сообщения
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

Для того чтобы проверить, что всё, что мы до сих пор настраивали, правильно работает, и то, что мы можем отправлять SMS-сообщения — достаточно выполнить такую команду:

echo "some message" | gammu --sendsms TEXT +79001234567

Отлично смска пришла настраиваем теперь запуск демона gammu-smsd. Для этого засуним его в планировщик для старта в перезагрузку:

root@web:~# crontab -e

@reboot gammu-smsd -d -c /etc/gammurc

3. Пересылка СМС в телеграмм

И так у нас есть настроенный на прием модем, демон который слушает смс и теперь надо просто переслать его в телегу. Для этого просто создаем бота в телеге получаем api бота и chat_id чата куда надо отправить и прописываем в файл по пути /root/smsrepiter.sh

root@web:~# cat smsrepiter.sh 
#!/bin/bash

TOKEN="xx646xxxx:xxxxcgpnjfISdH8zgTxXv9j-xxx"
ID="-xxxxxxx"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"

for i in `seq $SMS_MESSAGES` ; do
        eval "curl -s -X POST $URL -d chat_id=$ID -d text=\"\${SMS_${i}_NUMBER}: \${SMS_${i}_TEXT}\""
done

#Добавляем файл в конфигурации smsd

root@web:~# echo "runonreceive = /root/smsrepiter.sh" >> /etc/gammurc

Мы пересылам входящие смс в бот. Но тут есть подвох. Русская локализация))))

4. Локализация Русского языка

apt install language-pack-ru

update-locale LANG=ru_RU.UTF-8

На этом все))))

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.