Сценарий, используемый для запуска `run-parts` для portmapping с использованием Java-программы при отказе, не работает

#!/bin/sh
# Setup portforwarding on router depending on interface running scripts from a directory 10.0.0.30 being eth0 represented by folder 30 and 10.0.0.31 being wlan0 represented by folder 31
eth0_status=$(cat /sys/class/net/eth0/operstate)
wlan0_status=$(cat /sys/class/net/wlan0/operstate)
if [ "$eth0_status" = "up" ] && [ "$wlan0_status" = "down" ] ;
    then
      CURRDEV=eth0
fi  
if [ "$eth0_status" = "down" ] && [ "$wlan0_status" = "up" ] ;
    then
       CURRDEV=wlan0
fi
if [ "$eth0_status" = "down" ] && [ "$wlan0_status" = "down" ] ;
    then
       CURRDEV=
fi
if [ "$CURRDEV" = "eth0" ] ;
    then
       run-parts "/opt/portmapper/30"
       echo "Current device Ethernet"
elif [ "$CURRDEV" = "wlan0" ] ;
     then
       run-parts "/opt/portmapper/31"
       echo "Current device WiFi"
else
   echo "No changes need to be made to port mappings"
fi

Сценарий работает в настоящее время, но для того, чтобы он был меньше нагрузки, мне нужна проверка переменных, чтобы предотвратить выполнение исполняемых частей при каждом запуске скрипта. Мне нужно, чтобы он запускался один раз, когда устройство менялось от одного к другому, и не раз каждый раз, когда я указывал на отображение портов, запустив скрипт.

Пример скрипта сопоставления портов, который у меня есть в / opt / portmapper / 30 | 31 каталог 30 или 31 - это устройства ethernet, установленные eth0 или wlan0 соответственно.

 #!/bin/sh
    exec java -jar /opt/portmapper/portmapper.jar -lib org.chris.portmapper.router.sbbi.SBBIRouterFactory -add -protocol TCP -internalPort 443 -externalPort 443 -ip 10.0.0.30 ; sleep 2 ;
 fi

Я изначально вытащил его из этого рабочего скрипта в /etc/NetworkManager/dispatcher.d/ - часть else не работает. Я тоже должен работать над этим. Обратите внимание, что эта часть имеет [[]] вместо []. Если я помещаю одиночные скобки, здесь скрипт не работает.

 #!/bin/bash
 # Enable/disable wlan0 depending on eth0 and wlan0 current state
 eth0_status=$(cat /sys/class/net/eth0/operstate)
 wlan0_status=$(cat /sys/class/net/wlan0/operstate)
 if [[ "$eth0_status" = "up" ]];
     then
      nmcli con down id "wlan0"
 elif [[ "$wlan0_status" = "down" ]] && [[ "$eth0_status" = "down" ]];
   then
    nmcli con up id "wlan0"
 else
    nmcli nm eth0 on
    nmcli nm wlan0 off
 fi
1
задан 11 March 2016 в 02:39

0 ответов

Другие вопросы по тегам:

Похожие вопросы: