В сценарии оболочки выполните различные действия в зависимости от файла на другом сервере (доступная сеть)

WebDAV обеспечит то, чего Вы требуете. Apache + mod_dav является всем, в чем Вы нуждаетесь за счет 0$. Посмотрите, например: http://karol.miaskiewicz.com/?p=398

1
задан 6 May 2012 в 06:34
3 ответа

Вы можете использовать следующий сценарий:

#!/bin/bash

failsafe=`w3m -dump_source http://example.com/firewall/config/failsafe`
if [ "$failsafe" -eq "1" ] ; then
    /usr/firewall-scripts/failsafe.fw
elif [ "$failsafe" -eq "2" ] ; then
    /usr/firewall-scripts/failsafe2.fw
elif [ "$failsafe" -eq "0" ] ; then
    /usr/firewall-scripts/normal.fw
elif [ "$failsafe" -eq "-1" ] ; then
    /usr/firewall-scripts/extra-secure.fw
fi

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

Вышесказанное является ответом на ваш вопрос о сценарии оболочки, но я думаю, что было бы неплохо попробовать использовать решение для управления конфигурацией, например puppet . Агент марионетки можно запускать для периодического получения конфигурации от хозяина марионетки. Итак, когда вы закончили настройку марионетки, вы можете просто отбросить еще один файл правил брандмауэра и подождать некоторое время, чтобы его запустил агент марионетки на удаленном компьютере.

1
ответ дан 3 December 2019 в 17:56
#!/bin/bash 
# (or whatever the path to bash is, find out from 'which bash'

STATE=$(wget -O - http://example.com/firewall/config/failsafe)

case $STATE in
-1)
  /usr/firewall-scripts/extra-secure.fw
  ;;
0)
  /usr/firewall-scripts/normal.fw
  ;;

1)
  /usr/firewall-scripts/failsafe.fw
  ;;
2)
  /usr/firewall-scripts/failsafe2.fw
  ;;
*)
  echo "unexpected failsafe state"
  exit 1
  ;;
esac

exit 0
1
ответ дан 3 December 2019 в 17:56

Если вы используете

FAILSAFE=$(wget -O - http://example.com/firewall/config/failsafe) 

, то содержимое удаленного файла будет сохранено в переменной $ FAILSAFE.

Затем вы можете использовать $ FAILSAFE в своих сравнениях, например,

#!/bin/bash

FAILSAFE=$(wget -O - http://example.com/firewall/config/failsafe 2> /dev/null)

if [ "$FAILSAFE" -eq "1" ]
then
    echo "FAILSAFE = $FAILSAFE"
elif [ "$FAILSAFE" -eq "2" ]
then
    echo "FAILSAFE = $FAILSAFE"
elif [ "$FAILSAFE" -eq "-1" ]
then
    echo "FAILSAFE = $FAILSAFE"
fi
2
ответ дан 3 December 2019 в 17:56

Теги

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