Jump to content

Geont

Forum Members
  • Posts

    122
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by Geont

  1. Подскажите, скрипты, расположенные в /etc/ndm/wan.d будут отрабатывать?
  2. Приветствую и прошу помощи: Как через rest api выполнить запрос ip host my.local 192.168.111.111? Что-то вроде wget -qO - --post-data='[{"ip":{"host":{"my.local 192.168.111.111"}}}]' http://localhost:79/rci/ но так не работает. И как потом выполнить no ip host my.local?
  3. Скрипт, работающий на REST API #!/opt/bin/sh ConnName=Rostelecom counter=/opt/tmp/CountReconnectWan.txt previp=/opt/tmp/previp.txt max_tries=10 if ! opkg list-installed | grep '^jq' > /dev/null; then opkg update opkg install jq fi RESP=$(wget -qO - http://localhost:79/rci/show/interface | jq -r ".[] | select(.description==\"$ConnName\") | select(.defaultgw==true) | .id, .description, .address") [ -n "$RESP" ] || exit 1 _ip=$(echo $RESP | awk '{print $3}') _name=$(echo $RESP | awk '{print $2}') _iface=$(echo $RESP | awk '{print $1}') if echo "$_ip" | grep -qE "^(10\.|100\.6[4-9]\.|100\.[7-9][0-9]\.|100\.1[01][0-9]\.|100\.12[0-7]\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[01]\.)"; then [ -f "$counter" ] || echo "0" > $counter try_nr=$(cat $counter) try_nr=$((++try_nr)) if [ $try_nr -gt $max_tries ]; then echo "0" > $counter logger -p local0.error -t white_ip[$$] "Provider: $_name, interface: $_iface. Too much tries. Exit" exit 1 fi echo "$try_nr" > $counter logger -p local0.error -t white_ip[$$] "Provider: $_name, interface: $_iface. Reloading WAN due grey IP - $_ip. Try $try_nr of $max_tries." wget -qO - --post-data="[{\"interface\":{\"name\":\"$_iface\",\"down\":{}}}]" http://localhost:79/rci/ sleep 3 wget -qO - --post-data="[{\"interface\":{\"name\":\"$_iface\",\"up\":{}}}]" http://localhost:79/rci/ else echo "0" > $counter [ -f "$previp" ] || echo "0.0.0.0" > $previp _previp=$(cat $previp) if [ "$_previp" != "$_ip" ]; then logger -p local0.notice -t white_ip[$$] "Provider: $_name, interface: $_iface, white IP - $_ip." echo "$_ip" > $previp else logger -p local0.notice -t white_ip[$$] "Provider: $_name, interface: $_iface, white IP - $_ip (address unchanged)." fi exit 0 fi Для работы нужен пакет jq (будет установлен при первом запуске скрипта). Не забудьте поменять название подключения РТ в 3 строке на то, как оно названо в веб-интерфейсе.
  4. Коллеги, прошу помощи. Никак не могу сообразить, каков будет аналог команды ndmq -p "interface PPPoE0 (no)connect via GigabitEthernet1" -P message на REST API? Иными словами, нужно передернуть PPPoE подключение.
  5. Попробуйте запустить скрипт вручную из консоли, так будет больше информации.
  6. Немного обновил и причесал скрипт. Теперь работает стабильнее. #!/opt/bin/sh ConnName=Rostelecom counter=/opt/tmp/CountReconnectWan.txt previp=/opt/tmp/previp.txt max_tries=10 LIST=`ndmq -p 'show interface' -x | xml sel -t -m '//interface[link="up"][state="up"][global="yes"][defaultgw="yes"]' -v '@name' -o ',' -v 'description' -o ',' -v 'address' -o ',' -v 'via' -n` echo "$LIST" | grep -iwq "$ConnName" || exit 0 _ip=`echo "$LIST" | cut -d, -f3` _prov=`echo "$LIST" | cut -d, -f2` _iface=`echo "$LIST" | cut -d, -f1` _via=`echo "$LIST" | cut -d, -f4` if echo "$_ip" | grep -qE "^(10\.|100\.6[4-9]\.|100\.[7-9][0-9]\.|100\.1[01][0-9]\.|100\.12[0-7]\.|172\.1[6-9]\.|172\.2[0-9]\.|172\.3[01]\.)"; then [ -f "$counter" ] || echo "0" > $counter try_nr=$(cat $counter) try_nr=$((++try_nr)) if [ $try_nr -gt $max_tries ]; then echo "0" > $counter logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Too much tries. Exit" exit fi echo "$try_nr" > $counter logger -t white_ip[$$] "Provider: $_prov, interface: $_iface. Reloading WAN due grey IP - $_ip. Try $try_nr of $max_tries." ndmq -p "interface $_iface no connect via $_via" -P message sleep 5 ndmq -p "interface $_iface connect via $_via" -P message else echo "0" > $counter [ -f "$previp" ] || echo "0.0.0.0" > $previp _previp=$(cat $previp) if [ "$_previp" != "$_ip" ]; then logger -t white_ip[$$] "Provider: $_prov, interface: $_iface, white IP - $_ip." echo "$_ip" > $previp fi fi Кроме установленного пакета ndmq требуется также xmlstarlet. В переменной $ConnName (2-я строка) замените название подключения на свое - так, как оно названо у вас в web-интерфейсе. Больше ничего указывать не нужно. Подключений может быть несколько, скрипт обрабатывает только подключение с указанным названием в случае его использования в качестве основного. Расположение обычное: /opt/etc/ndm/wan.d/.
  7. Могу ошибаться, но по-моему, в настоящее время не все эти тонкости учитываются при отображении статуса ?
  8. Ну имя-то сервис присваивает только основному соединению... И это явно не статус службы. Как-то, года два назад, писал в поддержку: в слове "successfully" была орфографическая ошибка. Исправили.Так что это явно NDMS
  9. Который раз уже обращаю внимание, что у резервного подключения в статусе DDNS постоянно пишется "updated successfully". Мелочь, конечно, но логичнее все же писать, например, "waiting for active connection..." ну или что-то подобное, ИМХО. И может выводить это сообщение на языке локализации?
  10. я пришел отсюда Мой вопрос не по работе конкретных скриптов, а по работе Entware
  11. Ultra II. Скрипты в wan.d дергаются строго каждые полчаса, причем, в ровное время (15:00, 15:30...). На WAN два подключения, оба IPoE. Куда покопать?..
  12. Ок. А как можно в скрипт передать не название интерфейса ($interface), а его описание (PPPoE0) или то, как он назван пользователем? (это уже для отправки почты)
  13. именно. Если вообще убрать проверку интерфейса, срабатывает и поднятии соединения, которое может быть резервным.
  14. Если можно, пример... И да, не совсем точно выразился: не при активном основном соединении, а при любом соединении (это может быть и ppp0 и ppp1)
  15. Еще вопрос: у меня два соединения: основное и резервное. Оба PPPoE, интерфейсы, соответственно, ppp0 и ppp1. как сделать, чтобы обновление брокера происходило при поднятии основного подключения?
  16. BusyBox v1.25.1 () built-in shell (ash) ~ # sed -i '1c\#!/opt/bin/sh' /opt/etc/ndm/wan.d/010-tun6.sh ~ # ~ # /opt/etc/ndm/wan.d/010-tun6.sh 'leep: invalid number '5 ~ # ~ # /opt/etc/ndm/wan.d/010-tun6.sh -sh: /opt/etc/ndm/wan.d/010-tun6.sh: not found ~ #
  17. эмм... права 755, а на какого пользователя - как посмотреть?
  18. по поводу Файл создан, права назначены. в логе Opkg::Manager: process /opt/etc/ndm/wan.d/010-tun6.sh: failed to start. в ssh ~ # /opt/etc/ndm/wan.d/010-tun6.sh -sh: /opt/etc/ndm/wan.d/010-tun6.sh: not found содержимое файла: #!/bin/bash sleep 5 [ "$interface" = "ppp1" ] && curl -k -s "https://User:XXXXXXXXXXXXXXXX@ipv4.tunnelbroker.net/nic/update?hostname=452662" файл находится по указанному пути 100%
×
×
  • Create New...