понедельник, 19 января 2015 г.

Отключить Wi-Fi при подключенном LTE модеме Linux

  Итак, мне не нравиться руками переключать Wi-Fi и модем. Тут я вспомнил о UDEV, но ранее не имел опыта с этим инстументом. Спасибо поисковым сервисам. Итак:

2 скрипта:

  1. вынимает виртуальный привод в медеме (меня раздражает), опускает wlan0, выводит сообщение о успехе в виде уведомления.
  2. поднимает wlan0, рандомно меняет MAC адрес для wlan0 раз в 30 минут
1. /sh/udev_add.sh


#!/bin/bash
# При подключении модема отключить виртуальный привод и wlan0
sleep 30
if ifconfig | grep -oE usb0 &> /dev/null;
 then /usr/bin/eject /dev/sr0 && sudo /sbin/ifconfig wlan0 down && export DISPLAY=:0.0 && sudo -u evg /usr/bin/notify-send "beeline remove OK" # есть модем
 else sleep 1
fi
sleep 10
export DISPLAY=:0.0 && sudo -u evg /usr/bin/notify-send "UDEV OK"

2. /sh/udev_remove.sh

#!/bin/bash
while true; do
if ifconfig | grep -oE usb0 &> /dev/null;
 then sudo ifconfig wlan0 down && sleep 5 && export DISPLAY=:0.0 && sudo -u evg /usr/bin/notify-send "Есть USB модем, соединение Wi-Fi не требуется" && eject /dev/sr0
 else mac=$(dd if=/dev/random bs=1024 count=1 2>/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/')
      sudo ifconfig wlan0 down
      sudo ifconfig wlan0 hw ether $mac
      sudo ifconfig wlan0 up
      sleep 1
      sudo service network-manager restart
      sleep 5
      export DISPLAY=:0.0 && sudo -u evg /usr/bin/notify-send --icon=/usr/share/icons/hicolor/48x48/apps/gcr-password.png --urgency normal --expire-time=90000 -i typing-monitor -h int:x:500 -h int:y:500 "$mac" "new MAC wlan0"
fi
export DISPLAY=:0.0 && sudo -u evg /usr/bin/notify-send "`ifconfig | grep "Link en" | awk '{print $1}'`" "Доступные интерфейсы"
sleep 1790
done


Следующий шаг, надо добавить эти скрипты к подключению\отключения устройства.
начнем со сбора информации:

# udevadm monitor --environment --udev

Нас интересует: 
1. SUBSYSTEM
2. ID_VENDOR_ID
3. ID_MODEL_ID

Что с этим "богаством" делать?
Создаем файл в любимом текстовом редакторе:
sudo gedit\nano\leafpad /etc/udev/rules.d/90-usbmodem.rules


ACTION=="add", SUBSYSTEM=="block", ENV{ID_VENDOR_ID}=="19d2", ENV{ID_MODEL_ID}=="1403", RUN+="/sh/udev_add.sh"
ACTION=="remove", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="19d2", ENV{ID_MODEL_ID}=="1403", RUN+="/sh/udev_remove.sh &"

Приказываем UDEV перечитать правила:

udevadm control --reload-rules

Комментариев нет:

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

h265.sh

#!/bin/bash file="../mp4" if [ -d $file ]; then         echo "  Директория существует :-) "         for i in *.mp4; do f...