Tera Term(テラターム)のマクロ機能を利用し、SSH(パスワード認証) でサーバに自動ログインした後、文字コードを自動切り替えして日本語表示の文字化けを撃退するテラタームマクロをご紹介します。

簡単に説明しますと、自動ログイン完了後に接続先ホストが使用している文字コードを自動認識します。その文字コードに合わせて、Tera Term側の文字コード設定を変更する仕組みとなってします。

これによりサーバにログイン後、サーバの設定とTeraTermの設定が違う事による日本語表示の文字化けがほぼ発生しなくなると思われます。

手動で変更する場合の設定箇所
「設定」メニューの「端末の設定」を選択。「端末の設定画面」の「漢字-受信」「漢字-送信」部分の文字コード部分を変更
TeraTerm文字コード設定箇所

Linuxサーバでは以前「EUC」が主流だったのが、最近では「UTF-8」が多く使用されています。もし管理するサーバが多く文字コードが混在している環境では、サーバに接続するたびに文字コードを切り替えるのは面倒くさいのでマクロを使って作業効率化を図れたらいいですね。

スポンサーリンク

SSH自動ログインマクロ(文字コードを自動切り替え その壱)

;=========================================================== 
; Filename    : Character-code-01.ttl 
; Description : SSH Auto login 
; Author      : JUNZOU
; Created     : 2011/04/10 
; modified    : 
;=========================================================== 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '接続先IPアドレス'
USERNAME = 'ユーザ名' 
PASSWORD = 'パスワード' 
;=========================================================== 
;; ①コマンド組立て 
COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; ②接続 
connect COMMAND

;; ③接続判定1(接続出来ない場合はメッセージを表示しマクロ終了) 
if result <> 2 then 
    messagebox 'It could not be connected.' 'Connection Error' 
    end 
endif

;; ④接続判定2(10秒以内にプロンプトが表示されない場合TeraTerm終了) 
timeout = 10 
wait '$' '#' 
if result = 0 end

;; ⑤文字コードを判別し文字コードを設定 
sendln 'echo $LANG' 
wait 'ja_JP.UTF-8' 'ja_JP.eucJP' 'ja_JP.SJIS' 
if result = 1 then 
    ; UTF8 
    callmenu 54013  ; [KanjiCode] Recv: UTF-8 
    callmenu 54113  ; [KanjiCode] Send: UTF-8 
elseif result = 2 then 
    ; EUC 
    callmenu 54011  ; [KanjiCode] Recv: EUC-JP 
    callmenu 54111  ; [KanjiCode] Send: EUC-JP 
elseif result = 3 then 
    ; SJIS 
    callmenu 54010  ; [KanjiCode] Recv: Shift_JIS 
    callmenu 54110  ; [KanjiCode] Send: Shift_JIS 
endif

;; ⑥マクロ終了 
end

マクロ内容の解説

項番⑤「文字コードを判別し文字コードを設定」部分の解説

「sendln ‘echo $LANG’」で、接続先ホストの文字コードを確認しています。

「wait ‘ja_JP.UTF-8’ ‘ja_JP.eucJP’ ‘ja_JP.SJIS’」で「echo $LANG」の結果がコンソールに表示されるのを待っています。

表示された文字列により戻り値が設定されます。
「ja_JP.UTF-8」が表示されると戻り値=1
「ja_JP.eucJP」が表示されると戻り値=2
「ja_JP.SJIS」が表示されると戻り値=3
どれにも当てはまらない場合の戻り値=0

if文を利用して、戻り値によって対象の漢字コードを設定しています。

他の部分の解説は、ここでは割愛させていただきます。過去に「SSH自動接続マクロ」の中で詳しく解説していますので、そちらをご参照ください。

スポンサーリンク

プラグインの追加

このマクロを利用するには、追加プラグインの「TTX Kanji Menu」が必要になります。もしインストールされていなければ、再度セットアップを実行しプラグインのインストールを行ってください。
インストール時の追加プラグインの設定箇所

おわりに

TeraTermでサーバ等に接続しコンソール上で日本語表示部分が文字化けを起こしているのは、ほとんどが「サーバの使用している文字コード」と「TeraTerm側の文字コード設定」が異なっている事がほとんどです。

しかしこのマクロを利用する事で、自動的に適切な文字コードの設定変更が可能となっています。文字コードが混在する環境でサーバ管理を行っている方には役に立つかもしれませんね。