Telnetman の紹介

機能概要

  • telnet ツールを作るツール
  • GUI 操作のみ
  • プログラミング不要

デモ

ルーターのホスト名を変更する作業

  1. 現在のホスト名の取得コマンドの登録
  2. 取得ホスト名が正しいかの判定登録
  3. 取得コマンド、判定、設定コマンドの配置
  4. 新旧ホスト名のパラメーターシートへ定義
  5. 実行
  6. ログ確認

コマンドの動的生成

以下例のように、インターフェースの状態を確認して、status がup のGigabitEthernet のみに

パラメーターシートで定義されたmtu の値を設定していく、ということもできる。


TK170-LABRSW-01#show ip interface briefInterface IP-Address OK? Method Status ProtocolVlan1 unassigned YES NVRAM up downVlan10 10.249.1.132 YES NVRAM up upVlan60 unassigned YES unset up upFastEthernet0 unassigned YES NVRAM down downGigabitEthernet1/0/1 unassigned YES unset up upGigabitEthernet1/0/2 unassigned YES unset up upGigabitEthernet1/0/3 unassigned YES unset up upGigabitEthernet1/0/4 unassigned YES unset up upGigabitEthernet1/0/5 unassigned YES unset up upGigabitEthernet1/0/6 unassigned YES unset up upGigabitEthernet1/0/7 unassigned YES unset up upGigabitEthernet1/0/8 unassigned YES unset down downGigabitEthernet1/0/9 unassigned YES unset down downGigabitEthernet1/0/10 unassigned YES unset down downGigabitEthernet1/0/11 unassigned YES unset administratively down downGigabitEthernet1/0/12 unassigned YES unset up upTK170-LABRSW-01#TK170-LABRSW-01#TK170-LABRSW-01#TK170-LABRSW-01#configure terminalTK170-LABRSW-01(config)#interface GigabitEthernet1/0/1TK170-LABRSW-01(config-if)#mtu 9000TK170-LABRSW-01(config-if)#endTK170-LABRSW-01#TK170-LABRSW-01#TK170-LABRSW-01#TK170-LABRSW-01#configure terminalTK170-LABRSW-01(config)#interface GigabitEthernet1/0/2TK170-LABRSW-01(config-if)#mtu 1500TK170-LABRSW-01(config-if)#endTK170-LABRSW-01#-- snip --TK170-LABRSW-01#TK170-LABRSW-01#configure terminalTK170-LABRSW-01(config)#interface GigabitEthernet1/0/7TK170-LABRSW-01(config-if)#mtu 9000TK170-LABRSW-01(config-if)#endTK170-LABRSW-01#TK170-LABRSW-01#TK170-LABRSW-01#TK170-LABRSW-01#configure terminalTK170-LABRSW-01(config)#interface GigabitEthernet1/0/12TK170-LABRSW-01(config-if)#mtu 9000TK170-LABRSW-01(config-if)#end

拡張ツール

Telnetman Workflow

Telnetman でワークフローを組む。

Start にパラメーターシートを流し込むと、

Telnetman に送られ定義されたコマンドや判定が

実行される。

Telnetman からのOK, NG 判定結果に従い

パラメーターシートが順次送られていく。

開発に至った経緯

2013 年まで商用ネットワークの運用部門でシステム開発を担当。

主に監視ツールの作成をしていた。

ネットワークの導入部門に異動になり、そこでは数十 ~ 2千台のルーターを対象に

設定変更作業を日々行っている。

当然手作業でできる規模ではないため作業を自動化するためのツールの開発依頼が来る。


異動して1ヶ月で受けた最初の開発依頼のことである。

開発を終えて受入試験の依頼をしても一向に依頼者からの返答が無い。

何度も催促すると、計画が変更になりツールは必要無くなった、とのこと。

頭にきた。もう二度とこんな開発するものか、と。


こんな無駄な開発をしなくてすむようにするにはどうしたら良いか考えた。

まず、そもそもなぜ開発依頼をしてくるのかを考えた。

[ プログラミング能力 ] ━━無━━→ 開発依頼

↓有

[ 開発環境 ] ━━無━━→ 開発依頼

↓有

[ 時間 ] ━━無━━→ 開発依頼

↓有

自分で開発


次に、telnet ツールで共通化できる部分とそうでない部分は何か考えた。

共通可能 : telnet 実行部分、画面

できない : コマンド、パラメーター


telnet 実行部分とWeb 画面だけこちらで作ってコマンドとパラメーターは作業計画者で

定義すれば良いわけである。

コマンドとパラメーターの定義だけならプログラミング能力やサーバーは不要であるし、

そもそもこれらはツール化しようがしまいが定義しなければならないものなので

ツール化の影響で時間が取れないということも無い。


1度だけこのtelnet ツール作成のプラットフォームさえ作ってしまえば、

あとは作業が何件あろうが作業者側で勝手にやってくれる。

これで無駄な開発から開放された。

工夫した点

コマンド実行した結果が正しいかどうか判定するところで、例えばインターフェースの

up, down status やOS のバージョン情報、投入したコンフィグが入っているか、などを

正規表現で抜き出して確認するわけだが、プログラミング能力が無い人にとっては

この正規表現が鬼門となる。

正規表現がわからなので使えません、となる可能性がある。

そこで正規表現生成機能も付けた。

抜き出したい部分を含む1行を貼り付け、

抜き出したい部分を選択した状態で

生成ボタンを押すと正規表現の候補が

いくつか表示される。

とりあえず一番下の候補を採用すれば間違いない。

もう1つ、Telnetman サーバーが疎通できない環境で使いたい場合の対処が必要である。

Telnetman Light というボタンを押すと、telnet 実行部分の全コード、

登録したコマンド、判定のデータをJSON 化したものが

1つのスクリプトになって出力される。

これを開発環境で生成して商用環境にもってきて、

パラメーターシートのパスを引数で渡して実行すれば

Telnetman を使ったのと同じ効果が得られる。

実績

2014年 - 2017年度末までに対手作業比で1億6,000万円作業費を削減。

インストール手順

  1. git clone https://github.com/takahiro-eno/Telnetman2.git
  2. git clone https://github.com/takahiro-eno/TelnetmanWF.git
  3. cd TelnetmanWF
  4. sudo docker-compose build
  5. sudo docker-compose up -d

Telnetman : https://host address:8443/

Workflow : https://host address:9443/


  • ユーザー登録

トップ画面右上の「ユーザー登録」から登録。


  • 管理者アカウントで承認

トップ画面右上の「管理者用」から行う。

管理者のID, password を求められるので入力。(デフォルトはadmin / tcpport23)

画面一番下の「未承認ユーザー」で[承認]ボタンを押す。


  • 使い方

Telnetman のトップページにトレーニングページへのリンクがある。

トレーニング内容に従って操作すれば全機能使えるようになる。