ネットワークエンジニアの筆者は、NW機器にtelnetすることが多かった経験があります。
入力ミスがあると嫌なので、自動でconfig(設定)を取得したり、設定を変えたりするスクリプトを作りました。
その時のノウハウをざっくりと。
#1.gemのインストール
Rubyは標準のライブラリと追加しなければならないライブラリがあります。
今回はnet/telnetをインストールする必要があります。
gem install net-telnet
#2.telnetで機器の設定を取得
telnet.rb
require "net/telnet"
telnet_server = "IP address" #telnet接続したい機器のIPアドレス
user = "user" #telnet接続したい機器のログインユーザ名
password = "password" #telnet接続したい機器のログインパスワード
telnet_port = 23#telnet接続したい機器のtelnetポート番号(デフォルトは23)
timeout = 60
telnet = Net::Telnet.new("Host" => telnet_server, "Timeout" => timeout, "Port" => telnet_port)
telnet.login(user, password)
telnet.cmd("enable command") #特権モード切替コマンド
telnet.cmd("show config command") #機器の設定を表示
telnet.cmd("exit")
telnet.close
#3.機器の設定をファイルに保存したい場合
telnet-store.rb
require "net/telnet"
telnet_server = "IP address" #telnet接続したい機器のIPアドレス
user = "user" #telnet接続したい機器のログインユーザ名
password = "password" #telnet接続したい機器のログインパスワード
telnet_port = 23#telnet接続したい機器のtelnetポート番号(デフォルトは23)
timeout = 60
file = "cmdfile" #設定を保存したいファイルパス
$stdout = File.open(file, 'a')
telnet = Net::Telnet.new("Host" => telnet_server, "Timeout" => timeout, "Port" => telnet_port)
telnet.login(user, password)
telnet.cmd("enable command") #特権モード切替コマンド
telnet.cmd("show config command") #機器の設定を表示
telnet.cmd("exit")
telnet.close
$stdout = STDOUT
#4.まとめ
昨今、GUIの用意されていない機器は少数派ですがスクリプトによる自動化の基本となるコマンドです。