【SRへの道3】勉強ネットワーク①を構築する(tclshを使う)

トップページはこちら

前回までに行ったこと


勉強ネットワーク①の物理的な配線を行って、アドレス振りまで行いました。作ったネットワークがこちらになります。

pingで疎通確認が面倒!


さて、ネットワークの試験などでもそうなのですが、これだけ機器があると疎通確認がとても大変です。XE-A1のルーターはgi2 - gi5まで4本配線がしてあり、それぞれ対向側にpingを打って接続できているか確認しなければなりません。これを上記のすべての機器で行おうとするとそれだけで非常に骨が折れる作業になります。そこでこの疎通確認を簡単にできるような仕組みを考えてみます。

"tclsh"を活用

ここでciscoルーターにはtclshという役に立つコマンドが用意されています。

tclとは?

こちら"tcl"とはティクルと読み、1988年にカリフォルニア大学バークレー校の教授であったジョン・オースターハウト氏によって開発されたプログラミング言語だそう。"tcl"の名称は「Tool Command Language(ツールコマンド言語)」に由来しています。

tclshとは?

後ろに"sh"がつくとティクルシェルという呼び方になります。こちらはtclインタープリターのためのシンプルなシェルという意味になっており、標準入力またはファイルからtclコマンドを読み込んで実行するアプリケーションになるんですね。linux上で簡単にbashプログラムが実行できるshell scriptみたいなものですか。

ciscoルーター上でtclshを動かしてみる

ではこちらをルーター上で動かしてみたいと思います。
enableで特権モードに入り、"tclsh"と入力します。そうするとtclshモードに入ります。

XE-A1#tclsh
XE-A1(tcl)#

このtclshモードに入った後にスクリプトを実行していけるということですね。
では次にこのモードで以下のコマンドを打ってみます。

XE-A1(tcl)#foreach addr {
+>10.0.12.2
+>} { ping $addr
+>}

こちらは今対話シェルモードになっているのでエンターを押しても続けて入力していくことができます。最後のかっこ閉じるを忘れないようにしてエンターを押すと、、、

XE-A1(tcl)#foreach addr {
+>10.0.12.2
+>} { ping $addr
+>}
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

はい、このように{ }でくくった中に宛先IPアドレスに向けてpingを飛ばしてくれるのです。{ }の中は複数の宛先IPアドレスを記述することができるのでXE-A1ルーターと直接つながっている対向アドレスをまとめて書いてあげて実行してみます。

XE-A1#tclsh
XE-A1(tcl)#foreach addr {
+>10.0.12.2
+>10.0.13.3
+>10.0.15.5
+>1.1.11.2
+>} { ping $addr
+>}
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.13.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.15.5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/3/14 ms
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.11.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

はい、このように{ }の中に書いたアドレスに向けてまとめてpingを飛ばすことができました。

コマンドだけコピペ用にこちらも張り付けておきます。

tclsh
foreach addr {
10.0.12.2
10.0.13.3
10.0.15.5
1.1.11.2
} { ping $addr
}


まとめ

こちら最初にメモ帳にこのスクリプトを書いておけば、毎回pingコマンドを打たなくても、コピペで疎通確認することができます。
最近流行っているネットワークの試験の自動化ではこのようなことがより簡単にできるのですが、ひとまず今はこちらで頑張ってみます。

この記事が気に入ったらサポートをしてみませんか?