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
На этом все))))