Robot Framework 使ってみる②

#リモートホストでコマンド実行してみる
[Robot Framework 使ってみる①](https://qiita.com/navasato/items/862b7715595319a63239 "Robot Framework 使ってみる①")
やってみたいことの1番目：vyosのshowコマンドの出力結果を取得する　に挑戦する。

http://robotframework.org/SSHLibrary/SSHLibrary.html
execute/read/start/write あたりでコマンド発行とその結果取得ができそう。

手動で show version を実行すると以下のようになる。

```text:show&nbsp;version
vyos@vyos:~$ show version
Version:      VyOS 1.1.8
Description:  VyOS 1.1.8 (helium)
Copyright:    2017 VyOS maintainers and contributors
Built by:     maintainers@vyos.net
Built on:     Sat Nov 11 13:44:36 UTC 2017
Build ID:     1711111344-b483efc
System type:  x86 64-bit
Boot via:     disk
Hypervisor:   KVM
HW model:     KVM
HW S/N:       Not Specified
HW UUID:      76DF13EB-09FB-88F7-4C03-EC12D5287D9E
Uptime:       04:26:44 up 100 days, 13:45,  1 user,  load average: 0.01, 0.03, 0.05

vyos@vyos:~$
```

###まず成功経験にすがりつく
ssh接続の確認で execute command での実行結果を変数に格納できたので模倣する。
####execute command

```text:test03.robot
# cat test03.robot
*** Settings ***
Library  SSHLibrary

*** Variables ***
${user}       vyos
${password}   vyos
${ip1}  172.17.0.2
${ip2}  172.17.0.3

*** Test Cases ***
ssh test of vyos
    vyosに接続
    vyosにログイン
    ${output} =  Execute Command  echo SSH to vyos is OK!
    Log To Console  ${\n}${output}
    Should Be Equal  ${output}  SSH to vyos is OK!

show version
    ${out1} =  Execute Command  show version
    Log Variables
    Close All Connections

*** Keywords ***
vyosに接続
    Open Connection  ${ip1}
vyosにログイン
    Login  ${user}  ${password}
#
```

で、実行。

```text:result
# robot test03.robot
==============================================================================
Test03
==============================================================================
ssh test of vyos                                                      ...
SSH to vyos is OK!
ssh test of vyos                                                      | PASS |
------------------------------------------------------------------------------
show version                                                          | PASS |
------------------------------------------------------------------------------
Test03                                                                | PASS |
2 critical tests, 2 passed, 0 failed
2 tests total, 2 passed, 0 failed
==============================================================================
Output:  /root/output.xml
Log:     /root/log.html
Report:  /root/report.html
#
```
お、PASSした！
log 見ると
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284963/2f3552e3-85e4-9f33-bcdf-97079bb5ddf0.png)
何も入っていない。。。ですよね～世の中そんな甘くないですよね～
チートシートでは、Start Commandの説明が「リモートコマンドの実行を開始し、終了を待たずに処理を戻す」となってる。execute は終了するまで待つってことか？とりあえず試す。
####Start Command

 ```text
show version
    ${out1} =  Start Command  show version
    Log Variables
```

結果はPASSしたけど、${out1} = None　となって期待動作にはならず。終了待たなかったからNoneを入れたのか？？？気持ちを切り替えて次。
####Read Command Output

```text
show version
    Start Command  show version
    ${out1} =  Read Command Output
    Log Variables
```
結果は execute command の時と一緒。echoなどで一行出力だと期待通りになるっぽいが、、、複数行は無理なのか？
####Write & Read until

```text
show version
    Write  show version
    ${out} =  Read Until  ~$
    Log Variables
    Close All Connections
```

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284963/1b360fa9-b199-739a-9975-b3044e6ceebf.png)
きた！なんか行末に改行コードか制御文字か変なの付いているけど一応とれた。

一応できた。。。
もうちょっと試行錯誤して追記しよう