それでは、コマンドの結果をローカルにログファイルとして保存してみましょう。

下記がサンプルになります。
接続部分に関しては、同じですね。「=」で囲った箇所が、コマンドを実行した結果をローカルのデスクトップに保存する処理になります。

今回は、linuxの「hostname」コマンドと「uname -a」コマンドを実行してログに出力するサンプルを試してみます。

;接続先ホスト
HOSTADDR = '192.168.10.6' 

;ユーザ名
USERNAME = 'test'

;パスワード設定
PASSWORD = 'testpass' 

;接続コマンド作成
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD
 
;接続 
connect COMMAND

;================================================
;ログファイル保存
wait '$'
logopen "C:\Users\User\Desktop\command.log" 0 1
sendln ""
wait '$'
sendln "hostname"
wait '$'
sendln "uname -a"
wait '$'
logclose
sendln "exit"
;================================================

;マクロ終了 
end

まずは、「wait ‘$’」という文言が出てきましたが、これはプロンプトに、「$」が返ってくるまで待つという意味になります。
マクロのコマンドの入力速度はかなり速いので、全てのコマンド実行前には入れる必要があります。

スポンサーリンク


また、下記の文は、デスクトップに「command.log」を出力しますよという意味になります。
「logopen “C:\Users\User\Desktop\command.log” 0 1」

その後ろの0に関しては、「受信した文字を全て書き込まない」という設定になります。
よくわからないという方もいらっしゃるかもしれませんが、つまり、TeraTerm上に見えている画面に入力される文字以外の文字も出力されてしまうということですね。(実際にこのフラグを1にしてみればわかりますが、謎の文字列が出力されます。)

さらにその後ろに指定してある1に関しては、追記OKという指定ですね。なので今まで出力した内容がそのまま上書きされるのでなく、実行する度に内容が追記されます。

「sendln “”」としているのは、私の環境だけなのかもしれませんが、「logopen」した後の最初のプロンプトが出力されませんでしたので、一旦、改行を入れることで、ログに出力される結果を均一化しております。
(おそらく、logopenをした後のログファイルが生成されるまで一瞬のタイムラグが起こるためだとは思いますが、一旦このようにしております。)

また、「logopen」した後は、必ず「logclose」するようにしましょう。ログ出力終了という意味になります。

上記マクロを実行すると下記のようにデスクトップにログが出力されます。

また、実行結果は下記のようになります。

スポンサーリンク