CSVファイルを使ってTeraTermマクロにパラメータを渡す方法

複数のサーバやネットワーク機器に連続して接続させたい場合に役に立つ方法をご紹介します。

タイトルの通りなのですが、CSVファイルを使います。1行に1つづつ接続情報を記載したCSVファイルを使います。ここを読んでいる方の目的はハッキリしていると思いますので、余計な説明は飛ばして本題に入りましょう。

スポンサーリンク

CSVファイルの処理方法

今回は各レコードがカンマ(,)で区切られたフィールドを持つファイル形式を想定しています。別の文字でも構いませんが、カンマが一番無難だと思います。TeraTermマクロでフィールドを分割するためには strsplit コマンドを使います。

strsplit レコード セパレータ

レコードはCSVファイルから読み込んだ1行です。セパレータはカンマとなります。このコマンドを実行すると各フィールドの値がシステム変数groupmatchstr1 〜groupmatchstr9に格納されます。変数名から判りますが、フィールド数は9個までに限定されます。

たとえば次のようなレコードを想定します。

このレコードを処理するためには次のようにします。ファイルから読み込んで変数recordに格納しているものとします。

この結果、groupmatchstr1には「a」、groupmatchstr2には「b」、groupmatchstr3には「c」が格納されます。

CSVファイルを使ったサンプルマクロ

では少し実用的な例を紹介します。次のようなCSVファイルを用意します。最初のフィールドが接続先のIPアドレス、次がユーザー名、最後がパスワードです。ファイル名はsample.csvとしました。

このCSVファイルを使ってsshログインするTeraTermマクロを次のように書いてみました。

さて、このマクロは最初の1回は成功しますが2回目は失敗します。何故か?それは完全に接続が切れる前に次のconnectを実行してしまうためです。

連続してconnectする方法

方法としてはふたつあります。

  • 接続が切れるまで待つ
  • 強制的に切断する

接続が切れるまで待つ方法

汎用性があるのは最初の「接続が切れるまで待つ」です。この方法はtestlinkで接続状況を調べて、接続している間は待機します。次のように書きます。

強制的に切断する方法

unlinkコマンドを使うことにより、強制的に切断することができます。ただし、切断時にウィンドウが閉じるようにTeraTermの設定をおこなっている必要があります。

設定(s) – TCP/IPをクリックします。「自動的にウィンドウを閉じる」にチェックが入っていることを確認します。

この設定が入っていればunlinkの一行で切断が済み、次のconnectを実行することができます。

CSVファイルを使ったsshログインサンプルマクロ

切断が切れるまで待つバージョン

強制的に切断するバージョン

スポンサーリンク

フォローする

スポンサーリンク