„MikroTik::Scripting” változatai közötti eltérés
| (7 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva) | |||
| 1. sor: | 1. sor: | ||
[[category:MikroTik]] | |||
= Bevezetés = | = Bevezetés = | ||
A MikroTik eszközök rendelkeznek grafikus programozói felülettel (Winbox), de több olyan helyzet is előállhat, hogy a parancssorhoz kellene nyúlnunk: | A MikroTik eszközök rendelkeznek grafikus programozói felülettel (Winbox), de több olyan helyzet is előállhat, hogy a parancssorhoz kellene nyúlnunk: | ||
| 84. sor: | 85. sor: | ||
= Komplex scriptek = | = Komplex scriptek = | ||
[[category:Backup]] | |||
[[category:Biztonsági mentés]] | |||
== Backup küldés emailben és SFTP szerverre == | == Backup küldés emailben és SFTP szerverre == | ||
Az egyik legfontosabb, hogy mindig legyen mentésünk az eszközökről. A következő script segítségével biztonsági mentést hozhatunk létre, amit akár egyszerre több email címre és SFTP szerverre tölthetünk fel. | Az egyik legfontosabb, hogy mindig legyen mentésünk az eszközökről. A következő script segítségével biztonsági mentést hozhatunk létre, amit akár egyszerre több email címre és SFTP szerverre tölthetünk fel. | ||
| 127. sor: | 130. sor: | ||
"password"="password"\ | "password"="password"\ | ||
};\ | };\ | ||
{\ | |||
"address"="srv2.hu";\ | "address"="srv2.hu";\ | ||
"port"="22";\ | "port"="22";\ | ||
| 156. sor: | 159. sor: | ||
:local uploadSftp do={ | :local uploadSftp do={ | ||
:foreach i in $servers do={ | :foreach i in $servers do={ | ||
:put ("Upload ". $file . " to " . $i->"address" .":". $i->"port" . ", into " . $i->"dst-path" . " folder with user: ". $i->"user") | :put (\ | ||
/tool/fetch mode=sftp upload=yes address=($i->"address") port=($i->"port") user=($i->"user") password=($i->"password") src-path="$file" dst-path=($i->"dst-path".$file) | "Upload ". $file . " to " . $i->"address" .":". $i->"port" \ | ||
. ", into " . $i->"dst-path" . " folder with user: ". $i->"user" \ | |||
) | |||
/tool/fetch mode=sftp upload=yes \ | |||
address=($i->"address") port=($i->"port") \ | |||
user=($i->"user") password=($i->"password") \ | |||
src-path="$file" dst-path=($i->"dst-path".$file) | |||
} | } | ||
} | } | ||
| 163. sor: | 172. sor: | ||
/file remove [find where type="backup"] | /file remove [find where type="backup"] | ||
/file remove [find where type="script"] | |||
/system backup save name=(($backup->"prefix") . ($backup->"fileName")) password=($backup->"key") | /system backup save name=(($backup->"prefix") . ($backup->"fileName")) password=($backup->"key") | ||
/export show-sensitive file=(($backup->"prefix").($backup->"fileName")) | |||
:delay | :delay 10000ms | ||
$sendMail emails=$toEmails sender=$email smtp=$smtp file=($backup->"prefix" . $backup->"fileName") \ | $sendMail emails=$toEmails sender=$email smtp=$smtp file=($backup->"prefix" . $backup->"fileName") \ | ||
| 173. sor: | 184. sor: | ||
$uploadSftp servers=$sftpServers file=($backup->"prefix" . $backup->"fileName") | $uploadSftp servers=$sftpServers file=($backup->"prefix" . $backup->"fileName") | ||
$uploadSftp servers=$sftpServers file=($backup->"prefix" . $backup->"fileName".".rsc") | |||
/file remove [find where type="script"] | |||
</syntaxhighlight> | </syntaxhighlight> | ||
A script elején található konfigurációs rész igény szerint bővíthető, vagy redukálható. Jelenlegi állapotában két email címre és két sftp szerverre került mentésre a biztonsági mentésünk. A plain text alapú RSC fájlt csak az SFTP szerverre töltjük fel. Meg kell jegyezni, hogy ha az Identity paraméter szóközöket tartalmaz, akkor az RSC fájl feltöltésével problémák adódhatnak - ez esetben érdemes a $backup->fileName paramétert úgy előállítani, hogy ne legyen benne szóköz. | |||
A lap jelenlegi, 2024. május 18., 19:40-kori változata
Bevezetés
A MikroTik eszközök rendelkeznek grafikus programozói felülettel (Winbox), de több olyan helyzet is előállhat, hogy a parancssorhoz kellene nyúlnunk:
- Alap konfigurációk előállítása
- L1-L2 konfiguráció
- bridge
- wireless mód (station, ap stb.)
- VPN szerver / kliens aktiválás és alap konfiguráció
- VLAN interfészek
- L3 konfiguráció
- IP címek
- statikus route szabályok
- routing protokollok (ospf, bgp) alap beállítások
- L1-L2 konfiguráció
- Ütemezett feladatok végrehajtása
- Backup küldése emailben
- Watchdog / Netwatch
- Paraméterek monitorozása
A fentiek között találhatunk kényelmi megoldásokat és olyanokat is, amelyeket nem tudunk más módon megvalósítani ezen az eszközön. Ezért tehát érdemes bele nézni, hogy hogyan is készíthetünk scripteket az eszközre.
A script nyelv dokumentációját a MikroTik hivatalos oldalán itt találod.
A terminál használata
Nyelvi alap elemek
Változók
- Lokális változók
- Globális változók
- Tömbök
Elágazás
Ciklusok
- for
- foreach
- do-while
Terminál alapvető eszközei
Az eszközök közül csak egy-két érdekesebbet tekintek át, ezeknél sokkal több áll rendelkezésünkre.
- :put
- :set
- :pick
- :delay
- :resolv
Scriptelési lehetőségek
Az eszközben több olyan menüpontot is találunk, amelyek egy több soros text mezőt rejtenek. Ezekben a pozíciókban írhatunk saját scriptet, ami egy adott eseményre triggerelődik. Ha a jelet egy olyan esemény indítja el, amelyhez adatcsomag is tartozott (például egy dhcp lease történt), akkor egyedi változók segítségével kikérhetjük annak tartalmát. A következő helyeken találkozhatunk ilyennel, alatta a használható változókkal:
- /system/script
- /system/scheduler
- /ip/dhcp-client
- bound
- $"server-address"
- $"lease-address"
- $interface
- $"gateway-address"
- $"vendor-specific"
- $"lease-options"
- /ip/dhcp-server
- $leaseBound
- $leaseServerName
- $leaseActMAC
- $leaseActIP
- $lease-hostname
- $lease-options
- /tool/netwatch
- up-script
- down-script
- test-script
- /ppp/profile
- on-up
- $user
- $"local-address"
- $"remote-address"
- $"caller-id"
- $"called-id"
- $interface
- on-down
- $user
- $"local-address"
- $"remote-address"
- $"caller-id"
- $"called-id"
- $interface
- on-up
- /iot/mqtt/subscriptions
- $msgData
- $msgTopic
Komplex scriptek
Backup küldés emailben és SFTP szerverre
Az egyik legfontosabb, hogy mindig legyen mentésünk az eszközökről. A következő script segítségével biztonsági mentést hozhatunk létre, amit akár egyszerre több email címre és SFTP szerverre tölthetünk fel.
:local sendEmail {\
"address"="email@provider.hu"\
}
:local smtp {\
"server"="smtp.provider.hu";\
"port"=465;\
"tls"="yes";\
"user"="user@provider.hu";\
"password"="password"\
}
:local toEmails {\
"email1@provider.hu";\
"email2@provider.com"\
}
:local backup {\
"prefix"="";\
"key"="VERYSTRONGKEY";\
"fileName"=([/system identity get name ] . "_" . \
[:pick [/system clock get date] 0 4] ."_". \
[:pick [/system clock get date] 5 7] ."_". \
[:pick [/system clock get date] 8 10] ."-". \
[:pick [/system clock get time] 0 2] ."_". \
[:pick [/system clock get time] 3 5] ."_". \
[:pick [/system clock get time] 6 8] \
.".backup"\
)\
}
:local sftpServers {\
{\
"address"="srv1.hu";\
"port"="22";\
"dst-path"="/destination/path/";\
"user"="username";\
"password"="password"\
};\
{\
"address"="srv2.hu";\
"port"="22";\
"dst-path"="/destination/path/";\
"user"="user";\
"password"="password"\
}\
}
# sendMail function
:local sendMail do={
:local toEmails ""
:foreach i in $emails do={
:if ( $toEmails != "" ) do={
:set toEmails ($toEmails . ",")
}
:set toEmails ($toEmails . $i)
}
/tool/e-mail/send server=($smtp->"server") port=($smtp->"port") tls=($smtp->"tls") \
user=($smtp->"user") password=($smtp->"password") \
subject="$subject" to="$toEmails" from=($sender->"address") \
body="$text" file="$file"
}
# end of sendMail function
# uploadSftp function
:local uploadSftp do={
:foreach i in $servers do={
:put (\
"Upload ". $file . " to " . $i->"address" .":". $i->"port" \
. ", into " . $i->"dst-path" . " folder with user: ". $i->"user" \
)
/tool/fetch mode=sftp upload=yes \
address=($i->"address") port=($i->"port") \
user=($i->"user") password=($i->"password") \
src-path="$file" dst-path=($i->"dst-path".$file)
}
}
#end of uploadSftp function
/file remove [find where type="backup"]
/file remove [find where type="script"]
/system backup save name=(($backup->"prefix") . ($backup->"fileName")) password=($backup->"key")
/export show-sensitive file=(($backup->"prefix").($backup->"fileName"))
:delay 10000ms
$sendMail emails=$toEmails sender=$email smtp=$smtp file=($backup->"prefix" . $backup->"fileName") \
subject=([/system identity get name] ." ". [/system clock get date] . " " . [/system clock get time] . " backup file") \
text="Please note that the file is transmitted encrypted. If you have forgotten the key, please contact the appropriate person."
$uploadSftp servers=$sftpServers file=($backup->"prefix" . $backup->"fileName")
$uploadSftp servers=$sftpServers file=($backup->"prefix" . $backup->"fileName".".rsc")
/file remove [find where type="script"]
A script elején található konfigurációs rész igény szerint bővíthető, vagy redukálható. Jelenlegi állapotában két email címre és két sftp szerverre került mentésre a biztonsági mentésünk. A plain text alapú RSC fájlt csak az SFTP szerverre töltjük fel. Meg kell jegyezni, hogy ha az Identity paraméter szóközöket tartalmaz, akkor az RSC fájl feltöltésével problémák adódhatnak - ez esetben érdemes a $backup->fileName paramétert úgy előállítani, hogy ne legyen benne szóköz.
