Ilegalitou bych to nenazval, ale to je fuk, přejdu raději k tématu.
Na něco podobného mám poněkud obecnější řešení, jde o skript, který na vstupu dostane seznam adres a názvů zařízení, a v druhém vstupu to, co se má provést, následně přes SSH toto provede se všemi zařízeními na zadaných adresách (ty názvy jsou kvůli zpřehlednění logu, který z toho na konci vypadne). V tomto případě to tedy dostane seznam mikrotiků a krátký skript, který zjistí verzi RouterOS a firmware (parsováním výstupu z /system resource print a /system routerboard print) a podle toho provede upgrade firmwaru, nahrání novější verze RouterOS nebo nic. V těch prvních případech to pak danou adresu přidá do zvláštního seznamu pro další iteraci téhož skriptu (v rozhodování je nastavená určitá posloupnost verzí, aby se to např. nesnažilo upgradovat z verze 4.15 rovnou na 6.42.6). Následně pak z logu lze snadno ručně nebo strojově přečíst, co to s každou adresou udělalo.
Není to možná nejefektivnější přístup pro MikroTik, nicméně tento procházeč máme jeden univerzální pro MikroTik, UBNT, Cisco, Edge-Core a cokoliv dalšího. Dohledový systém má u všeho označeno, o jaké zařízení jde, takže třeba ten upgrade spouští postupně od klientů přes AP dál, aby to např. neodřízlo upgrade klientů restartem AP nebo aby se to nesnažilo flashnout RouterOS do UBNT zařízení, takže je to opravdu snadné k použití (pro obsluhu), spolehlivé (selhává to pouze u boardů typu RB133 s načatými kondíky, které by při upgradu chcíplo tak jako tak) a univerzální (je tomu jedno, jestli to provádí jenom ping nebo tuhle upgrade maškarádu). Snažíme se mít to vše modulární, snadněji se to udržuje a vylepšuje.
Skript to může nahrát přes scp jako soubor, jak jsem již uvedl, nebo přímo ze skriptu - což, jak jsem si před chvílí ověřil, bez problému funguje, stačí mezery v určitých místech. Co se úskalí týče, daní za tu univerzalitu je pomalost, upgradovat tím celou síť by trvalo dlouho, zvláště kvůli tomu iterativnímu přístupu. Toto řešíme víceméně hrubou silou, totiž "procházeč" běží ve více instancích, z nichž každá upgraduje jinou část sítě. A jelikož lenost je motorem pokroku, nakonec to celé uzavře skript, který přečte ty logy a upozorní obsluhu na případné problémy, které při tom nastaly.
EDIT: K problému "Jak vložit skript přes terminál" nemohu odpovědět lépe, než již bylo odpovězeno:
je veliký rozdíl, jestli se za
A) přihlásíš do konzole přes ssh a v terminálu napíšeš
/system script add name="script1" source="/system reboot"
B) posíláš pomocí ssh pouze příkaz, protože v tomhle případě musíš dávat bacha co ti uzavírá parametry toho ssh posílaného příkazu (escapovat znaky, které se mají přenést jako znaky a ne se chovat jak parametry u tebe v systému)
ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -n admin@192.168.44.201 "/system script add name=\"script2\" source=\"/system reboot\""