SlideShare a Scribd company logo
Scripting on

RouterBOARD
RouterBoard勉強会 Vol.4
@yousuke_saki
:put "Hello, world."
:put "Hello, world."
「:put」は画面に文字を出力するコマンド
Global commands は「:」ではじまる

http://wiki.mikrotik.com/wiki/Manual:Scripting#Global_commands
文字列は " " で囲む
コマンドはコンソールに直接入力できる
変数で Hello, world.
:global hello

:set hello "Hello,"

{

:local world "world."

:put ($hello . " " . $world)

}
変数の宣言は「:global」または「:local」
「:set」コマンドで変数に値を代入する
スコープは { } で、式は ( ) で囲む
変数で Hello, world.
いろいろ表示してみる
インターフェイスを表示してみると…?

:put [/interface get 0]
MACアドレスだけ表示するには…?

:put [/interface get 0 mac-address]
戻り値の型はどうなっているの…?

:put [:typeof [/interface get 0]]
引数に渡すコマンドは [ ] で囲む
get
「get」は、idや番号で指定した

一つのアイテムの情報を取得するコマンド
階層によって少しだけ書式が違う
/interface get 0

/interface get 0 name

⇒idの指定が必要
/system clock get time

⇒idの指定がない
/system scheduler
起動時または時刻を指定
実行を繰り返す間隔を指定
ここにスクリプトを書く
必要なポリシーをチェック
/system scheduler
例:PPPoE接続が切れた時に、

できる限り早く再接続するスクリプト
/interface pppoe-client

:if (true != [get 0 running]) do={

set 0

}
Start Time = startup
Interval = 再接続処理を実行する間隔
Policy = read, write, test, policy
分岐と繰り返し
:if (...) do={...}
:for ... from=... to=... do={...}
:foreach ... in=... do={...}
:while (...) do={}
:do {...} while=(...)
分岐と繰り返し
例:CPUの負荷が10%未満の時だけ…
/system resource

:if (10 > [get cpu-load]) do={...}
例:1から10を表示する
:for i from=1 to=10 do={

:put $i

}
分岐と繰り返し
例:インターフェース名一覧表示
/interface

:foreach item in=[find] do={

:put [get $item name]

}
[find] を [find running] にすると

動作中のインターフェースが一覧表示される
find
「find」はアイテムを検索するコマンド
単純に find とすると全てのアイテムが

配列で返される(例:/interface find)
単純な一致で検索できる

(例:/inferface find name="ether1")
正規表現で検索することもできる

(例:/inferface find name "ether")
findと配列とset
「find」コマンドの戻り値は配列
「set」コマンドはアイテムの指定に

配列が使えるので、foreachしなくても…
/interface

set [find running] comment="!"
set + find で一括編集できる
よく使われるコマンド
:beep ビープ音を鳴らす
:find 文字列検索
:pick 文字列の切り出し
:resolve ホスト名をIPアドレスに
/tool fetch HTTPとかFTPでダウンロード
/tool e-mail メール送信
スクリプトの例
Scripts - MikroTik Wiki

http://wiki.mikrotik.com/wiki/Scripts
Scripting examples - MikroTik Wiki

http://wiki.mikrotik.com/wiki/Manual:Scripting-examples
インターネット接続設定スクリプト

http://routerboard.jp/support/Internet.html
ばっどのうはう?
宣言直後の変数は型が nothing ですが、

この仕様は突然変更された経緯があるので

信用しないほうがいいかもしれません
findによる検索が機能せず、

アイテムが全部返ってくるというバグが

つい半年前にリリースされていました
exportコマンドで出力されるスクリプトは

順番に問題があって実行できないことが

珍しくないので信用してはいけません
Wikiの情報は

“まぁまぁ正しい”
( 空気を読むんだ! )
よくわからない時は
「 デバッグ = :put 」
説明は以上です
Let's scripting!

More Related Content

Similar to Scripting on RouterBOARD

Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
Fujishiro Takuya
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
decode2016
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
Mr. Vengineer
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
mganeko
 

Similar to Scripting on RouterBOARD (6)

Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
0x300
0x3000x300
0x300
 
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
DEV-011_TypeScript ~Any browser. Any host. Any OS. Open Source~
 
VerilatorとSystemC
VerilatorとSystemCVerilatorとSystemC
VerilatorとSystemC
 
Build Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.jsBuild Node.js-WASM/WASI Tiny compiler with Node.js
Build Node.js-WASM/WASI Tiny compiler with Node.js
 
Perl入学式 #1
Perl入学式 #1Perl入学式 #1
Perl入学式 #1
 

More from Yousuke Saki

さきラボの就業規則
さきラボの就業規則さきラボの就業規則
さきラボの就業規則
Yousuke Saki
 
異能vationの研究計画概要
異能vationの研究計画概要異能vationの研究計画概要
異能vationの研究計画概要
Yousuke Saki
 
RouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみようRouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみようYousuke Saki
 
ネットブックに Windows 7 を入れてみた
ネットブックに Windows 7 を入れてみたネットブックに Windows 7 を入れてみた
ネットブックに Windows 7 を入れてみたYousuke Saki
 
車載PCとWindows
車載PCとWindows車載PCとWindows
車載PCとWindowsYousuke Saki
 
スマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境についてスマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境についてYousuke Saki
 
開発環境によるGUIの違い
開発環境によるGUIの違い開発環境によるGUIの違い
開発環境によるGUIの違いYousuke Saki
 
RouterBOARD はじめの一歩
RouterBOARD はじめの一歩RouterBOARD はじめの一歩
RouterBOARD はじめの一歩
Yousuke Saki
 

More from Yousuke Saki (8)

さきラボの就業規則
さきラボの就業規則さきラボの就業規則
さきラボの就業規則
 
異能vationの研究計画概要
異能vationの研究計画概要異能vationの研究計画概要
異能vationの研究計画概要
 
RouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみようRouterBOARDで無線LANメッシュを構築してみよう
RouterBOARDで無線LANメッシュを構築してみよう
 
ネットブックに Windows 7 を入れてみた
ネットブックに Windows 7 を入れてみたネットブックに Windows 7 を入れてみた
ネットブックに Windows 7 を入れてみた
 
車載PCとWindows
車載PCとWindows車載PCとWindows
車載PCとWindows
 
スマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境についてスマートフォンのWebアプリ実行環境について
スマートフォンのWebアプリ実行環境について
 
開発環境によるGUIの違い
開発環境によるGUIの違い開発環境によるGUIの違い
開発環境によるGUIの違い
 
RouterBOARD はじめの一歩
RouterBOARD はじめの一歩RouterBOARD はじめの一歩
RouterBOARD はじめの一歩
 

Scripting on RouterBOARD