Witam, probuje napisac skrypt, ktorego zadaniem jest utworzenie pliku z lista hostow, ktore maja miec wlaczony NAT. W zaleznosci od tego czy sprawdzany komputer nalezy do grupy PPPoE skrypt ma wpisac do tego pliku jego IP lub IP opcjonalne (dodatkowe pole ip_pub). ma to wiec wygladac np tak: NAT_INTERNAL_NET="10.0.0.101 10.1.1.3 10.0.0.4 10.0.0.6"
ponizej skrypt ktore teraz mecze, problem mam z utworzeniem oraz wykorzystaniem zmiennej ISPPPOE (1 lub 0 gdy host nalezy do grupy PPPoE). Prosze o pomoc w optymalizacji i naprawieniem kodu lub drobna wskazowke na co zwrocic uwage...
------- {if (fileexists("/etc/firewall/nat-hosts")) deletefile("/etc/firewall/nat-hosts"); /if; }NAT_INTERNAL_NET="{ if (number(NODES)) for (i=0; i<number(NODES); i++) ISPPPOE = SELECT IF((SELECT nodegroupid FROM nodegroupassignments WHERE nodegroupid=(SELECT id FROM nodegroups WHERE name = 'PPPoE') AND nodeid=NODES[i].ip)>0,'1','0') AS result; if (ISPPPOE==1) if (number(NODES[i].access) && number(NODES[i].ownerid)!=0)}{NODES[i].ip_pub}{ISPPPOE}{if (i<number(NODES)-1)} {/if; /if; else if (number(NODES[i].access) && number(NODES[i].ownerid)!=0)}{NODES[i].ip}{if (i<number(NODES)-1)} {/if; /if; /if /for; /if}"\n -------
!DSPAM:49a4f382159966491211187!
node@satfilm.net.pl wrote:
ponizej skrypt ktore teraz mecze, problem mam z utworzeniem oraz wykorzystaniem zmiennej ISPPPOE (1 lub 0 gdy host nalezy do grupy PPPoE). Prosze o pomoc w optymalizacji i naprawieniem kodu lub drobna wskazowke na co zwrocic uwage...
{if (fileexists("/etc/firewall/nat-hosts")) deletefile("/etc/firewall/nat-hosts"); /if; }NAT_INTERNAL_NET="{ if (number(NODES)) for (i=0; i<number(NODES); i++) ISPPPOE = SELECT IF((SELECT nodegroupid FROM nodegroupassignments WHERE nodegroupid=(SELECT id FROM nodegroups WHERE name = 'PPPoE') AND nodeid=NODES[i].ip)>0,'1','0') AS result; if (ISPPPOE==1)
SELECT zwraca tablicę, więc musisz się do niej odwoływać tak jak do NODES, czyli ISPPPOE[0].result. Natomiast ja bym ci radził przerobić zapytanie o NODES tak, żeby zawierało już zmienną ispppoe, będzie dużo szybciej, niż pytać o każdego hosta z osobna. Kolejna sprawa to to, że zmienną w zapytaniu powinieneś objąć w klamry: ...nodeid={NODES[i].id}...
node@satfilm.net.pl wrote:
ponizej skrypt ktore teraz mecze, problem mam z utworzeniem oraz wykorzystaniem zmiennej ISPPPOE (1 lub 0 gdy host nalezy do grupy PPPoE). Prosze o pomoc w optymalizacji i naprawieniem kodu lub drobna wskazowke na co zwrocic uwage...
{if (fileexists("/etc/firewall/nat-hosts")) deletefile("/etc/firewall/nat-hosts"); /if; }NAT_INTERNAL_NET="{ if (number(NODES)) for (i=0; i<number(NODES); i++) ISPPPOE = SELECT IF((SELECT nodegroupid FROM nodegroupassignments WHERE nodegroupid=(SELECT id FROM nodegroups WHERE name = 'PPPoE') AND nodeid=NODES[i].ip)>0,'1','0') AS result; if (ISPPPOE==1)
SELECT zwraca tablicę, więc musisz się do niej odwoływać tak jak do NODES, czyli ISPPPOE[0].result. Natomiast ja bym ci radził przerobić zapytanie o NODES tak, żeby zawierało już zmienną ispppoe, będzie dużo szybciej, niż pytać o każdego hosta z osobna.
czy da sie to zrobic tak by wszelkie modyfikacje byly zawarte we frontendzie? zadnego zmieniania samych plikow lms, tak aby uniknac przypadkowego nadpisania przy aktualizacji lms. Chodzilo o to aby w tresci skryptu utworzyc nowe zapytanie dla NODES?
Kolejna sprawa to to, że zmienną w zapytaniu powinieneś objąć w klamry: ...nodeid={NODES[i].id}...
czy mozna wiec zagniezdzac nawiasy klamrowe? czy trzeba wczesniej zamknac.
jak ponizsze zdebugowac, teraz po prostu nie generuje pliku? ------------------------------- {if (fileexists("/etc/firewall/nat-hosts-test")) deletefile("/etc/firewall/nat-hosts-test"); /if; }\ NAT_INTERNAL_NET="\ {if (number(NODES)) for (i=0; i<number(NODES); i++) ISPPPOE = SELECT IF((SELECT nodegroupid FROM nodegroupassignments WHERE nodegroupid=(SELECT id FROM nodegroups WHERE name = 'PPPoE') AND nodeid={NODES[i].id})>0,'1','0') AS result; if (ISPPPOE[0].result==1) if (number(NODES[i].access) && number(NODES[i].ownerid)!=0)}{NODES[i].ip_pub}{if (i<number(NODES)-1)} {/if; /if; else if (number(NODES[i].access) && number(NODES[i].ownerid)!=0)}{NODES[i].ip}{if (i<number(NODES)-1)} {/if; /if; /if /for; /if}"\n
-------------------------------
!DSPAM:49a7dfe384099031758699!
node@satfilm.net.pl wrote:
czy da sie to zrobic tak by wszelkie modyfikacje byly zawarte we frontendzie? zadnego zmieniania samych plikow lms, tak aby uniknac przypadkowego nadpisania przy aktualizacji lms. Chodzilo o to aby w tresci skryptu utworzyc nowe zapytanie dla NODES?
no możesz zrobić przecież nodes = SELECT ....
Kolejna sprawa to to, że zmienną w zapytaniu powinieneś objąć w klamry: ...nodeid={NODES[i].id}...
czy mozna wiec zagniezdzac nawiasy klamrowe? czy trzeba wczesniej zamknac.
można zagnieżdżać
jak ponizsze zdebugowac, teraz po prostu nie generuje pliku?
jeśli jest błąd w zapytaniu lub w skrypcie to coś powinno być w syslogu, dodatkowe debugowanie samego T-scripta możesz włączyć w kodzie parser.c odkomentowując tscript_set_debug_callback.
uczestnicy (2)
-
A.L.E.C
-
node@satfilm.net.pl