Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#1

15 окт 2021, 13:05

Здравствуйте. Хочу настроить автоматическую перезагрузку sip телефонов Grandstream. У них динамический ip адрес. Мне известны МАС адреса. Этот код выполняемый из браузера 100% перезагружает телефон: http://10.238.31.116/cgi-bin/api-sys_operation?passcode=xxxxxxxxx &request=REBOOT&

Нашел оригинальный скрипт:

Код: Выделить всё

while read TYPE MAC IP EXT IGNORE; do
    echo "$TYPE, $MAC, $IP, $EXT, $IGNORE"
    if [ "$TYPE" == "SPA303" ]; then
        echo "Processing $IP - $EXT"
        curl -s "http://$IP/admin/reboot" > /dev/null
        sleep 1
    fi
done
Переделал под себя, но он не работает. Выполняю в консоли sh 1.sh, консоль вечно его выполняет, не выдавая ошибок. При этом телефон не перезагружается.

Код: Выделить всё

#!/bin/sh
while read TYPE MAC IP EXT IGNORE; do
echo "$TYPE, $MAC, $IP, $EXT, $IGNORE"
if [ "$MAC" == "00:0B:82:ED:90:8B" ]; then
echo "Processing $IP - $EXT"
curl -s "http://$IP/cgi-bin/api-sys_operation?passcode=GG31qvD18z&request=REBOOT&" > /dev/null
sleep 1
fi
done
Описание скрипта в моем (не)понимании:

Код: Выделить всё

#!/bin/sh
while read TYPE MAC IP EXT IGNORE; do //предлагает выбрать какой тип данных будет использован для вычисления ip адреса
echo "$TYPE, $MAC, $IP, $EXT, $IGNORE" 
if [ "$MAC" == "00:0B:82:ED:90:8B" ]; then //тут я указал что тип данных - MAC адрес и вписал МАС адрес одного из телефонов
echo "Processing $IP - $EXT"
curl -s "http://$IP/cgi-bin/api-sys_operation?passcode=xxxxxxxxx&request=REBOOT&" > /dev/null //http://$IP/cgi-bin/api-sys_operation?passcode=GG31qvD18z&request=REBOOT& - сюда скипт должен подставить вычесленный IP адрес, xxxxxxxxx - пароль, REBOOT - команда на перезагрузку.
sleep 1
fi
done
Последний раз редактировалось пользователем 1 rogoznik; всего редактировалось раз: 15
Причина: исправил форматирование

Аватара пользователя

rogoznik
Сообщения: 10048
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#2

15 окт 2021, 13:11

 ! Сообщение из: rogoznik
Научись уже пользоваться Панель форматирования текста в темах/ответах
ogankvik писал(а):
15 окт 2021, 13:05
"http://$IP/cgi-bin/api-sys_operation?passcode=xxxxxxxxx&request=REBOOT&"
Выведи это в консоль и посмотри что там у тебя
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#3

15 окт 2021, 13:17

ogankvik писал(а):
15 окт 2021, 13:05
while read TYPE MAC IP EXT IGNORE; do
...
Выполняю в консоли sh 1.sh, консоль вечно его выполняет,
Так в скрипт же ничего не передаешь получается.
Изображение
   
Изображение

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#4

15 окт 2021, 13:19

Заменил $IP на 10.238.31.116. Не смотря на "[4] Завершён request=REBOOT" - телефон не перезагрузился :)

Код: Выделить всё

user@user-desktop:~$ http://10.238.31.116/cgi-bin/api-sys_operation?passcode=xxxxxxxxx&request=REBOOT&
[5] 2238
[6] 2239
[3]   Выход 127          http://10.238.31.116/cgi-bin/api-sys_operation?passcode=xxxxxxxxx
[4]   Завершён        request=REBOOT
bash: http://10.238.31.116/cgi-bin/api-sys_operation?passcode=xxxxxxxxx: Нет такого файла или каталога

Аватара пользователя

WWolf
Сообщения: 3899
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1688 раз
Поблагодарили: 1213 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#5

15 окт 2021, 13:20

ogankvik, passcode :-D

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#6

15 окт 2021, 13:47

WWolf писал(а):
15 окт 2021, 13:20
ogankvik, passcode :-D
да вы специально его у меня вытянули))). В двух местах скрыл, проверяю сообщение - а он еще в одном месте отобразился..
Chocobo писал(а):
15 окт 2021, 13:17
ogankvik писал(а):
15 окт 2021, 13:05
while read TYPE MAC IP EXT IGNORE; do
...
Выполняю в консоли sh 1.sh, консоль вечно его выполняет,
Так в скрипт же ничего не передаешь получается.
а как туда что-то передать? Я вроде вписал мак в строку "if [ "$MAC" == "00:0B:82:ED:90:8B" ]; then".

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#7

15 окт 2021, 14:44

ogankvik, покажи источник скрипта.
Тут я пока вижу что они у тебя пустые на входе, соответственно мак ему сравнивать будет не с чем
Изображение
   
Изображение

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#8

15 окт 2021, 14:46

ogankvik, Наберите "man read" и прозрейте. Ваш скрипт тупо ждет ввода данных с клавиатуры всех переменных: TYPE MAC IP EXT IGNORE. В нем нет вообще ничего на счет проверки соответствия реальных IP и MAC. Он проверят то, что будет с клавиатуры введено, и ничего более. В текущем виде - совершенно бесполезно для вашей задачи.

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#9

15 окт 2021, 14:51

Chocobo писал(а):
15 окт 2021, 14:44
ogankvik, покажи источник скрипта.
https://qna.habr.com/q/274902

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#10

15 окт 2021, 14:58

ogankvik писал(а):
15 окт 2021, 13:05
У них динамический ip адрес. Мне известны МАС адреса
тогда проще сваять своего скрипта, навскидку как-то так

1. на вход подаем мак нужного девайса
2. находим ip по маку из arp или ip n
3. отправляем курлом тот реквест на ребут
Изображение
   
Изображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#11

15 окт 2021, 15:05

Снимок экрана в 2021-10-15 15-04-05.png
Что-то вот такое)
Изображение
   
Изображение

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#12

15 окт 2021, 15:43

Chocobo, спасибо!!! Переписал код из вашего примера:

Код: Выделить всё

MAC="00:0B:82:ED:90:8B"
IP=$(ip n | grep $MAC | cut -f1 -d " ")
echo $IP
curl -v "http://$IP/cgi-bin/api-sys_operation?passcode=xxxxxxxxx&request=REBOOT&"
и всё равно не работает:

Код: Выделить всё

* Unwillingly accepted illegal URL using 3 slashes!
*   Trying 172.17.150.249...
* TCP_NODELAY set
а как вы выполнили код так, чтобы отображался результат выполнения (как у вас на скрине)?

Аватара пользователя

WWolf
Сообщения: 3899
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1688 раз
Поблагодарили: 1213 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#13

15 окт 2021, 16:00

ogankvik писал(а):
15 окт 2021, 15:43
Unwillingly accepted illegal URL using 3 slashes!

Аватара пользователя

rogoznik
Сообщения: 10048
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#14

15 окт 2021, 16:00

ogankvik писал(а):
15 окт 2021, 15:43
http://$IP/cgi-bin/api-sys_operation?passcode=xxxxxxxxx&request=REBOOT&
& в конце строки лишний
В теории, вроде как, не должен влиять, но мало ли
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#15

15 окт 2021, 16:10

ogankvik писал(а):
15 окт 2021, 15:43
чтобы отображался результат выполнения
он и будет отображаться, это -v (verbose) ключ для curl'a
Изображение
   
Изображение

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#16

19 окт 2021, 14:46

Думаю, проблема где-то в этом месте:

Код: Выделить всё

IP=$(ip n | grep $MAC | cut -f1 -d " ")
ip n - отрабатывает. Список маков выводится. А вот grep $MAC | cut -f1 -d " " не знаю как проверить. Может у меня какой-то пакет в системе отсутствует. Chocobo, ты из какой ОС этот скрипт запускал? У меня Минт.
Сейчас скрипт работает как-то так:
Снимок экрана от 2021-10-19 14-26-32.png

Аватара пользователя

WWolf
Сообщения: 3899
Зарегистрирован: 14 фев 2018, 00:51
Решено: 31
Откуда: Краснодар
Благодарил (а): 1688 раз
Поблагодарили: 1213 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#17

19 окт 2021, 15:37

ogankvik, дело не в версиях, эти утилиты работают везде одинаково...
а ошибка у тебя в мак адресе... ip n возвращает в нижнем регистре, а ты передаёшь в смешанном/в верхнем...
grep -i сделай, что б игнорировать регистр

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#18

19 окт 2021, 15:40

все так, $IP не получен. grep сравнивает жестко регистр без -i
Он тебе его должен перед выполнением показать, где выполняется echo $IP
Изображение
   
Изображение

no avatar

Автор темы
ogankvik
Сообщения: 178
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 98 раз
Поблагодарили: 9 раз
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#19

19 окт 2021, 15:42

WWolf писал(а):
19 окт 2021, 15:37
а ты передаёшь в смешанном/в верхнем...
:-D ну и долба.. . Самое обидное - я же исправил регистр букв в маке. КАК можно было не заметить эту D???? Вот и спрашиваешь потом, откуда берется неуверенность в себе.. . БОЛЬШОЕ СПАСИБО!

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

Перезагрузка SIP телефонов по маку или другим статичным данным кроме ip адреса

#20

19 окт 2021, 16:09

ogankvik, Я бы не советовал пока слишком успокаиваться - этот вариант не будет работать 100% стабильно.

Он опирается на кеш ARP, адреса же в нем появляются только после обращения по IP и остаются не на всегда. Т.е. если до того как скрипт запускается, этот компьютер не обращался к нужному телефону - IP найден не будет.

Чтобы гарантировано найти нужный IP - надо именно искать по маку, а не только кеш проверять. Есть такая программа - arping, она работает примерно как обычный ping но по маку. После нее нужное значение в кеше гарантировано будет, если телефон вообще в сети.

Ответить

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей