Jump to content

Geont

Forum Members
  • Posts

    118
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by Geont

  1. Приветствую и прошу помощи: Как через 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?
  2. Скрипт, работающий на 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 строке на то, как оно названо в веб-интерфейсе.
  3. Коллеги, прошу помощи. Никак не могу сообразить, каков будет аналог команды ndmq -p "interface PPPoE0 (no)connect via GigabitEthernet1" -P message на REST API? Иными словами, нужно передернуть PPPoE подключение.
  4. Попробуйте запустить скрипт вручную из консоли, так будет больше информации.
  5. Немного обновил и причесал скрипт. Теперь работает стабильнее. #!/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/.
  6. Могу ошибаться, но по-моему, в настоящее время не все эти тонкости учитываются при отображении статуса ?
  7. Ну имя-то сервис присваивает только основному соединению... И это явно не статус службы. Как-то, года два назад, писал в поддержку: в слове "successfully" была орфографическая ошибка. Исправили.Так что это явно NDMS
  8. Который раз уже обращаю внимание, что у резервного подключения в статусе DDNS постоянно пишется "updated successfully". Мелочь, конечно, но логичнее все же писать, например, "waiting for active connection..." ну или что-то подобное, ИМХО. И может выводить это сообщение на языке локализации?
  9. я пришел отсюда Мой вопрос не по работе конкретных скриптов, а по работе Entware
  10. Ultra II. Скрипты в wan.d дергаются строго каждые полчаса, причем, в ровное время (15:00, 15:30...). На WAN два подключения, оба IPoE. Куда покопать?..
  11. Ок. А как можно в скрипт передать не название интерфейса ($interface), а его описание (PPPoE0) или то, как он назван пользователем? (это уже для отправки почты)
  12. именно. Если вообще убрать проверку интерфейса, срабатывает и поднятии соединения, которое может быть резервным.
  13. Если можно, пример... И да, не совсем точно выразился: не при активном основном соединении, а при любом соединении (это может быть и ppp0 и ppp1)
  14. Еще вопрос: у меня два соединения: основное и резервное. Оба PPPoE, интерфейсы, соответственно, ppp0 и ppp1. как сделать, чтобы обновление брокера происходило при поднятии основного подключения?
  15. 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 ~ #
  16. эмм... права 755, а на какого пользователя - как посмотреть?
  17. по поводу Файл создан, права назначены. в логе 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%
  18. ИМХО, плохая идея. Если туннель развалится, все хосты на стороне клиента, получающие IP автоматом, превратятся в тыкву. А отвал при 3 Мбитах практически неизбежен. Опять же ИМХО
  19. В общем, то ли лыжи, то ли я. Настроил между Ultra II (сервер) и Giga III (клиент) IPIP/IPSec и EoIP/IPSec. С IPIP проблем нет, все маршрутизируется, скорость порядка 88 Мбит. EoIP на стороне сервера завернут в Home, на стороне клиента завернут в выделенный бридж с LAN4. Вчера все с ним было относительно хорошо (назначался IP от удаленного DHCP, был доступ в нет, но были некоторые проблемы с открытием сайтов и доступом к хостам на стороне сервера). Сегодня стало все плохо - не назначается даже IP, хотя оба туннеля подняты. В логах на мой вгзляд ничего подозрительного. Вроде все просмотрел, но может уже глаз замылился... Конфиги: system set net.core.eoip_allow_fragment 1 //сервер interface EoIP0 mac address 72:92:4f:0b:7e:98 security-level private ip dhcp client dns-routes ip dhcp client name-servers ipsec preshared-key ipsec ikev2 tunnel source auto tunnel eoip id 1500 up ! interface Bridge0 rename Home description "Home network" inherit GigabitEthernet0/Vlan1 include AccessPoint include AccessPoint_5G include EoIP0 security-level private ip address 192.168.150.1 255.255.255.0 ip dhcp client dns-routes ip dhcp client name-servers igmp downstream up ! interface IPIP0 security-level private ip address 192.168.100.1 255.255.255.0 ip dhcp client dns-routes ip dhcp client name-servers ip mtu 1400 ipsec preshared-key ipsec ikev2 tunnel source auto up ! //клиент interface Bridge2 description IPTV inherit GigabitEthernet0/Vlan4 include wifiIPTV include EoIP0 security-level protected ip dhcp client dns-routes ip dhcp client name-servers up ! interface EoIP0 mac address 9a:5b:2b:47:1f:4f security-level private ip dhcp client dns-routes ip dhcp client name-servers ipsec preshared-key ipsec ikev2 tunnel destination yyy.ru tunnel eoip id 1500 up ! interface IPIP0 security-level private ip address 192.168.100.2 255.255.255.0 ip dhcp client dns-routes ip dhcp client name-servers ip mtu 1400 ipsec preshared-key ipsec ikev2 tunnel destination yyy.ru up ! Self-test прикрепил ниже
  20. Ну в смысле у подключения, находящегося в состоянии резервирования. А писать что-то типа waiting...
×
×
  • Create New...