Ahoj, mel bych dotaz.
Snazim se uz delsi dobu zapracovat na nejake automatizaci mikrotiku v siti. Zatim uspesne vyresena vec je manipulace prez php a program expect. V phpku mu ruznymi parametry reknu co chci a prez expect po sshacku dam na mikrotika co chci.
Prvni problem nastal v tom, ze kdyz chci nekoho editovat, timto zpusobem to asi nelze. Kdyz budu mit ve fw 50 uzivatelu a budu chtit 34. uzivatele zeditovat, nebo smazat, nevim jak mu to v tom phpku rict. Musel bych znat jeho id pro remove. Nabizi se moznost dle klicovych znaku. Bud podle ip a nebo dle komentare. Takze, mam script
:foreach i in [/ip firewall filter find] do={
:if ("." . [:find [/ip firewall filter get $i comment] "nekdo"] . "."!="..") do={
:put [/ip firewall filter get $i comment]
:put [/ip firewall filter remove $i]
}
}
Kde "nekdo" je komentar nejakeho pravidla zrovna. Kdyz takhle jak to vidim, vezmu a pres winbox pridam do scriptu a spustim, tak to smaze pravidlo, ktere ma komentar nekdo. To je funkcni, ale jakmile se to snazim udelat prez konzoli, tak nastane chyba. A stale si nedokazu vysvetlit, v cem je chyba. I pri vystupu na webu zahlasi chybu.
spawn ssh 10.105.1.190 -l admin
admin@10.105.1.190's password:
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 2.9.18 (c) 1999-2006 http://www.mikrotik.com/
[24B
Terminal linux detected, using multiline input mode
[24B
[admin@tester] > system script add name=energy policy=write,test,read,policy,pasEsword, source= :foreach i in [/ip firewall filter find] do={ :if ("." .E [:find [/ip firewall filter get comment] "nekdo"] . "."!="..") do={ :putE [/ip firewall filter get comment] :put [/ip firewall filter remove ] E } }
no such argument (i)
[24B
[admin@tester] > nejak to radkovani musi fungovat, ale nemohu prijit na to jak.