[エンジニア必見!]TeraTermマクロをバッチから呼び出すとエラーがでるときの対処法

技術成長記録
スポンサーリンク

お疲れ様です、kouです。
今日は、僕が最近つまづいたteratermマクロについて紹介します。

はじめに。

↓の回で書いたときのつまづきポイント以外にもう一つありました。
前回はこんな感じのところでした↓

[エンジニア必見!]TeraTermマクロがタスクスケジューラで実行されないときの対処法

前回同様、今回紹介するポイントも僕がteraterm自体をなめていたことです・・・(笑)
それでは、よろしくお願いします!

どんな状況?

前回も書いたのですが、わざわざ前回を見に行くのも大変な人もいると思うので、
つまづいたときの環境をざっくり説明します。

作成したTeraTermマクロのプログラム(.ttlファイル)を、
Windowsのタスクスケジューラ上で実行することを想定しています。

僕の例だと、ESXiサーバにTeraTermでSSH接続を自動化するマクロファイルを作っておいて、
それを呼び出すバッチファイル(.bat)をタスクスケジューラにて定義します。
↓の図をイメージします。

動作環境はシンプルです。
それでは、実際に実行したときに何が起こったかを説明します。

イベントログに謎のエラーが!

↑の状況で、動かしたい処理は何も問題なく終了していたんです。
しかし、ふとイベントログを見てみるとアプリケーションログにエラーが・・・

Application Error タスクのカテゴリ(Y)(100)
イベントID1000 キーワード(k)クラシック

障害が発生しているアプリケーション名: ttpmacro.exe
・・・<省略>・・・

再度、タスクスケジューラを実行してみると、明らかにそのタイミングでエラーが出てる。。
でも処理は何も問題ない・・・

じゃあ、バッチを手動で実行してみよう!タスクスケジューラの問題かもしれないから。
バッチをコマンドプロンプトから実行してみる → エラー出る。。

じゃ、そもそもteraterm自体を手動で起動してみよう!
 → エラーでない。。。

ということは、teratermを何らかの形で呼び出すといけなさそうなのか・・・
でも違うサーバでタスクスケジューラからteratermを実行してたはずなのに、そっちは出てない。
何が違うのか・・・?

結論:teratermのバージョン依存でした。。

結論はシンプルでした(笑)
teratermのバージョンを落として実行すると、解消しました。

僕が使用していたteratermが、当時最新(2019.12リリース版)でした。
動作実績のあるteratermのバージョンは5年以上前のものでした。

最新版だからって、なんでもOKなわけじゃないんですよねー。。
ここが、僕がteratermをなめていたポイントです。
teratermくらいで大した問題は起こらないだろうと・・・実際処理は動いてるし。

おわりに:今回学んだこと

今回はシンプルな原因でしたが、改めて油断できなことを書いておきます。

  • 使用するソフトウェアはまずは動作実績のあるものを使用する
    • それでOKだったら、最新バージョンで試すのがあとで問題にならない順序
  • 最新のソフトウェアだからって、問題が起きないわけじゃない
    • ソフトウェアが最新でも、使用するOSなどが古いと何か起こるかもって頭に入れておく
    • 僕の場合はWindows Server 2012 r2のOSでteratermを使用しました
      (それが関係あると言っているわけではありません。疑うべきということです)

こんな感じです。小さなことですが、日々反省と勉強になります。
これを一度でも経験しておくと同じような障害が起きた時に疑いを持つことができるし、
事前に疑うこともできます。

そして、エラーが出ても焦る必要がなくなりますね(笑)
本当、常々思うのが、エラーの数だけ成長できると・・・

ということで今回は以上です。
自分の備忘録のようになりましたが、もし同じような問題が起こった人の参考になれば幸いです。

ここまで見ていただき、ありがとうございました!!

コメント

タイトルとURLをコピーしました