Tera Term(テラターム)のマクロ機能を利用し、SSH(パスワード認証) でサーバに自動ログインした後、文字コードを自動切り替えして日本語表示の文字化けを撃退するテラタームマクロをご紹介します。
簡単に説明しますと、自動ログイン完了後に接続先ホストが使用している文字コードを自動認識します。その文字コードに合わせて、Tera Term側の文字コード設定を変更する仕組みとなってします。
これによりサーバにログイン後、サーバの設定と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側の文字コード設定」が異なっている事がほとんどです。
しかしこのマクロを利用する事で、自動的に適切な文字コードの設定変更が可能となっています。文字コードが混在する環境でサーバ管理を行っている方には役に立つかもしれませんね。
大佐古様
こんにちは。
過日は、iptables をご教示いただきありがとうございます。
原因は、ポート番号設定番号側の単純ミスだったのですが、
おかげさまでこの部分はクリアできました。
先ずは、ご報告いたします。
本日は、TeraTermマクロの勉強でログインしています。
マクロの内容は別にして、初心者なので下記のようなことが分かりません。
1. 必要な動作環境は(これは載っている記事がそうかも知れませんが)
2. 次に、どこのメニューでクリックしてコードを書く・・・(これが不明)
3. 保存や何かのリンク関係は?
※解説は無くても、1・2・3の単純ステップでご教示いただければ・・・
以上 手のあいたときにでもアドバイスいただけると幸いです。
菅原さん。
それでは簡単にご説明いたします。
①基本TeraTermがインストールされていれば、マクロは動作します。
バージョンによって使えるマクロコマンドが違いますのでご注意ください。
②マクロはメモ帳で作成可能です。テキストエディタとかあれば更にいいですね。
③拡張子をttlとして保存します。実行方法は下記を参照してください。
http://www.j-oosk.com/teraterm/macro/173/
以上。