Strona 1 z 1

[BASH|PERL?]Plik konfiguracyjny-czytanie zmiennych

: 20 listopada 2007, 15:18
autor: dracorp
Witam
Wziąłem się za przepisanie mojego starego skryptu do firewall'a i zachciało mi się go napisać tak aby był jak najbardziej przenośny. Dlatego też zdecydowałem się na trzymanie zmiennych informujących o uaktywnionych usługach(i ich opcjach) w pliku konfiguracyjnym.
Problem jest taki że jak na razie nie mam pomysłu jak się do nich dobrać biorąc pod uwagę, że teoretycznie nie znam nazw tych zmiennych. Np. było by coś takiego:

Kod: Zaznacz cały

#{{{ SERVICES
ftp="1 port:21 limi:1/s"
www="1 port:8080"
ssh="1"
#}}}
Nazwy usług były by brane z /etc/services. Tylko jak się odwołać do tych zmiennych w skrypcie? Ostatnio sobie wydumałem żeby na początku dodać linijkę w stylu

Kod: Zaznacz cały

SERVICES="usluga1 usluga2... uslugan"
i dalej coś w stylu:

Kod: Zaznacz cały

for i in $SERVICES; do
     echo $i;
     #lub bardziej echo $$i ale to nie przechodzi.
done
Wcześniej miałem w pliku conf. wpisane np. flag_www=1 i w głównym skrypcie sprawdzana była ta zmienna i odpowiednio uaktywniany dany blok. Ale takie coś pociąga za sobą opisanie każdej usługi w skrypcie. A marzy mi się stworzenie czegoś bardziej elastycznego.
A co do perla, to ostatnio zacząłem czytać o nim i tak się powoli zamierzam do niego i może lepiej dać sobie spokój w tym przypadku z bashem?
Jakaś rada?

: 21 listopada 2007, 23:10
autor: db
Ja mam tak:

Kod: Zaznacz cały

 OUTPUT_TCP_SERVICES="2222 22 ftp 25 www 443 110 995 143 993 2703"
 OUTPUT_UDP_SERVICES="53 123 24441"
[...]

 for PORT in $OUTPUT_UDP_SERVICES; do
            $IPTABLES -A OUTPUT -p udp -m state --state NEW -o $DEV_INET --dport ${PORT} -j services_output_udp
        done
Oprócz tego możesz wyciągać awkiem [a z perla to i nawet w xmlu konfigi trzymać ].