はじめに
今回はrobotframeworkを使ってsshで接続し、コマンドのログを取得する方法にについてです。
robotframeworkでsshで接続してログを取得するなんて使い方ができます。
(場合によっては設定そのものの変更も可能です)
今回はciscoのスイッチ・ルータに接続する例です。
サンプルプログラム
sshで接続してコマンドを実行する簡単なプログラムです。
Test Casesでは
- SSHでログイン
- ログを全て表示するためのコマンド入力
- show ip routeの表示
- FastEthernetの状態を表示
- enable~configure terminalの表示
- FastEthernetにIPアドレス設定
- ログアウト
- FastEthernetの設定の再表示
を行っています。
*** Settings ***
Library SSHLibrary
Library OperatingSystem
*** Variables ***
${user_name} cisco
${pass} cisco
# 「.」はエスケープ文字が必要
${target_ip} 192\.168\.56\.10
*** Keywords ***
ssh接続
Open Connection ${target_ip}
Login ${user_name} ${pass}
*** Test Cases ***
SSHでログインする
ssh接続
ログ表示でmoreを出さない
Write terminal length 0
show ip routeコマンド実行
Write show ip route
${output}= Read delay=3s
Log To Console ${\n}${output}
FastEthernet 0/1の状態を表示する
Write show interfaces FastEthernet 0/1
${output}= Read delay=3s
Log To Console ${\n}${output}
enable~configure terminal実行
Write enable
Write ${pass}
Write configure terminal
FastEthernet0/1にIPアドレスを設定
Write interface FastEthernet 0/1
Write ip address 192.168.50.1 255.255.255.0
Write no shutdown
Write exit
end入力
Write end
設定変更後のFastEthernet 0/1の状態を再表示する
Write show interfaces FastEthernet 0/1
${output}= Read delay=3s
Log To Console ${\n}${output}
TelnetはrobotframeworkのSSHLibraryが必要です。
インストールできていない場合はpipコマンドでインストールしてください。
pip install robotframework-sshlibrary
Open Connectionで接続をし、Loginでユーザ名やパスワードを入力します。
ここはTelnetと同じです。
ログが「–more–」で全て表示されないのを防ぐのにterminal length 0をコマンドの前にあらかじめ使用しています。
Writeで命令を実行します。
例ではshow ip route他を使用していますが、ciscoのコマンドの実行がこのWriteでできます。
(Show running-configなど)
コンソールに表示される結果を表示する場合、Writeの後にReadを使用します。
出力を待つためにdelayを指定していますが、秒数を変更することが可能です。
(例では3s=3秒です)
logの表示以外にもIPアドレスの変更なども行っています。
この辺りが自動でできるのはかなり便利な一方、誤って設定するとログインできなくなる可能性があるのでそこは注意が必要です。
さいごに
今回はrobotframeworkでのCisco装置へのsshの方法でした。
SSH自体は別にCisco装置以外でも可能ですので、用途に合わせて変更してください。
SSH部分は単純で
Open ConnectionとLoginを使用すればいいだけです。
この記事がお役に立ったのならば嬉しいです。
最後までお読みいただきありがとうございました。