Найти в Дзене
Home Assistant

Настройка выключателей VPN и сенсоров сетевых интерфейсов Keenetic в Home Assistant OS через SSH (Часть 2)

Итак, в первой части мы настроили авторизацию на роутере по SSH без пароля.
Теперь давайте создадим необходиые скрипты на роутере. Их будет несколько.
Для этого подключаемся программой Putty к нашему роутеру (к системе Entware на USB). IP: 192.168.1.1
port: 222 1) При помощи редактора vi, создаём первый скрипт vpnon.sh vi vpnon.sh В редакторе vi нажимам "i" для начала ввода и копируем строки ниже: #!/bin/sh
wget -qO - --post-data='[{}]' localhost:79/rci/interface/up?name=OpenVPN0 >/dev/null 2>&1
echo vpnon После написания нажимаем:
ESC
вводим :wq - команда записи файла, с поcледующем выходом из редактора (двоеточие и буквы wq)
Enter 2) Второй скрипт vpnoff.sh vi vpnoff.sh #!/bin/sh
wget -qO - --post-data='[{}]' localhost:79/rci/interface/down?name=OpenVpn0 >/dev/null 2>&1
echo vpnoff 3) Третий скрипт vpnstate.sh vi vpnstate.sh #!/bin/sh
for iface in OpenVPN0; do
if [ "$(wget -qO - localhost:79/rci/show/interface/${iface}/state | sed 's,",,g')" = "up" ]; then
echo "vpno
Оглавление

Часть 2

Итак, в первой части мы настроили авторизацию на роутере по SSH без пароля.

Теперь давайте создадим необходиые скрипты на роутере. Их будет несколько.
Для этого подключаемся программой
Putty к нашему роутеру (к системе Entware на USB).

-2
IP: 192.168.1.1
port: 222


У нас будет 3 срипта для работы с VPN:

1) При помощи редактора vi, создаём первый скрипт vpnon.sh

vi vpnon.sh

В редакторе vi нажимам "i" для начала ввода и копируем строки ниже:

vpnon.sh:

#!/bin/sh

wget -qO - --post-data='[{}]' localhost:79/rci/interface/up?name=OpenVPN0 >/dev/null 2>&1

echo vpnon

После написания нажимаем:
ESC
вводим :wq - команда записи файла, с поcледующем выходом из редактора (двоеточие и буквы wq)
Enter

2) Второй скрипт vpnoff.sh

vi vpnoff.sh

vpnoff.sh:

#!/bin/sh

wget -qO - --post-data='[{}]' localhost:79/rci/interface/down?name=OpenVpn0 >/dev/null 2>&1

echo vpnoff

3) Третий скрипт vpnstate.sh

vi vpnstate.sh

vpnstate.sh:

#!/bin/sh

for iface in OpenVPN0; do
if [ "$(wget -qO - localhost:79/rci/show/interface/${iface}/state | sed 's,",,g')" = "up" ]; then
echo "vpnon" && exit 0
fi
done

echo "vpnoff"

exit 0

Как узнать имя интерфейса vpn?

Для этого переходим по адресу http://192.168.1.1/a
Вводим show interface и нажимаем send request

-3

Прежде чем мы перейдём к работе с самим Home Assistant, давайте создадим ещё 3 скрипта для работы с политиками:

Эти скрипты позволяют перемещать устройство из одной политики доступа в другую, не обрывая vpn соединение на роутере!

-4

1) При помощи редактора vi, создаём первый скрипт pcvpn.sh

В Putty вводим:

vi pcvpn.sh

#!/bin/sh

ndmc -c ip hotspot host xx:xx:xx:xx:xx:xx policy Policy5
#здесь нужно указать политику с Вашим vpn соединением

echo "vpn"

Вместо xx:xx:xx:xx:xx:xx указываем нужный mac адрес устройства домашней сети

После написания нажимаем:
ESC
вводим :wq - команда записи файла, с поcледующем выходом из редактора (двоеточие и буквы wq)
Enter

2) Второй скрипт pcnovpn.sh

#!/bin/sh

ndmc -c ip hotspot host xx:xx:xx:xx:xx:xx policy Policy4
#здесь нужно указать политику с Вашим стандартным соединением

echo "novpn"

3) Третий скрипт pcvpnstate.sh

#!/bin/sh

ndmc -c sh run | grep "
xx:xx:xx:xx:xx:xx policy" | awk '{print $4}'

Номер текущей политики устройства можно узнать командой

ndmc -c sh run | grep "xx:xx:xx:xx:xx:xx policy"

Не забываем дать права на исполнение нашим скриптам:

chmod +x *.sh
-5

Почти готово. Теперь обучим наш Home Assistant новым трюкам)))

Для этого в configuration.yaml создаём запись

command_line:
- switch:
name: vpn
command_on: ssh -F /config/.ssh/conf hass './vpnon.sh'
command_off: ssh -F /config/.ssh/conf hass './vpnoff.sh'
command_state: ssh -F /config/.ssh/conf hass './vpnstate.sh'
value_template: '{{ value == "vpnon" }}'

- switch:
name: vpn_policy
command_on: ssh -F /config/.ssh/conf hass './pcvpn.sh'
command_off: ssh -F /config/.ssh/conf hass './pcnovpn.sh'
command_state: ssh -F /config/.ssh/conf hass './pcvpnstate.sh'
value_template: '{{ value == "Policy5" }}' #здесь нужно указать политику с Вашим vpn соединением из
pcvpn.sh

А как же сенсоры? И о них мы не забудем:

command_line:
- binary_sensor:
name: VPN connection
command: ssh -F /config/.ssh/conf hass "wget -qO - localhost:79/rci/show/interface/
OpenVpn0/connected | sed 's,\",,g'"
device_class: connectivity
payload_on: "yes"
payload_off: "no"

- binary_sensor:
name: Wi-Fi connection
command: ssh -F /config/.ssh/conf hass "wget -qO - localhost:79/rci/show/interface/WifiMaster1/connected | sed 's,\",,g'"
device_class: connectivity
payload_on: "yes"
payload_off: "no"

- binary_sensor:
name: Port connection
command: ssh -F /config/.ssh/conf hass "wget -qO - localhost:79/rci/show/interface/GigabitEthernet1/connected | sed 's,\",,g'"
device_class: connectivity
payload_on: "yes"
payload_off: "no"

Не забываем сделать ребут Home Assistant после правки configuration.yaml

-6

Вот и всё! ЧАСТЬ 1

Умный Дом Home Assistant

м