Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (3,639)  
HandBrake Japanese Language Version  (1,988)  
CrystalDiskInfo  (1,756)  
Tera Term  (1,752)  
Boookends  (1,171)  
CotEditor  (882)  
CrystalDiskMark  (847)  
FFFTP  (835)  
MergeDoc  (557)  
10  mixfont-mplus-ipa  (534)  
11  TortoiseSVN  (482)  
12  えこでこツール  (417)  
13  FreeMind  (380)  
14  Amateras  (374)  
15  Cabos  (346)  
More >>

最近ブックマークされた記事

Tera Termマクロ活用入門(2):リモートマシンを自在に操作する

2010年01月18日 20:00 松島浩道 1 2 3

 「Tera Term」(テラターム)はWindows向けのターミナルエミュレータとして有名だが、マクロ機能を利用することでネットワーク経由でサーバーやネットワーク機器を自動制御するためのツールとしても利用できる。今回は、ネットワーク経由でLinuxサーバーを制御したり、Windowsのバッチファイルと連携させて使用する例を紹介しよう。

TeraTermおよびTeraTermマクロを活用しよう

 前回は「Tera Termマクロ活用入門(1):各種ログインを自動化する」と題し、Tera Termマクロの基本と、SSHを利用した自動ログインを行うマクロなどを紹介した。続いて本記事では、ネットワーク経由でLinuxサーバーを操作する例として、ログの取得やバッチ処理の実行、Windowsのバッチファイルとの連携などを行うマクロを紹介しよう。

 なお、Tera Termの詳しい紹介やインストール方法、基本的な使い方、Cygwinとの連携方法などについては『Windows用定番SSHクライアント「Tera Term」の使い方』という記事でまとめられているので、こちらも参照していただきたい。

リモートのマシンでコマンドを実行し、その結果をローカルのファイルとして保存する

 ネットワーク経由でサーバーを管理している場合、頻繁に利用するような各種診断コマンドやメンテナンスコマンド、ログの取得コマンドなどを自動実行するマクロを用意しておくと便利だ。次のリスト1は、「ネットワーク経由でSSH接続およびログイン→ログ取得の開始→コマンドの実行→ログアウト」という一連の作業を自動実行するマクロである。

 このマクロでは、あらかじめ指定しておいたユーザー名で指定ホストにログインし、「df」コマンドを実行してその結果をローカルの指定ディレクトリに「df-<日付>-<時間>.log」というファイル名で保存するというものだ。この例ではdfコマンドを発行しているが、マクロ内の(1)の部分を書き換えることで任意のコマンドを実行できる。

リスト1 リモートマシンでdfコマンドを実行するTera Termマクロ

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
username = '<ユーザー名>'
hostname = "<ホスト名>"
keyfile = "<SSH公開鍵のパス名>"

remote_prompt = "$"  ; リモートマシンのプロンプト記号。bash系なら「$」、cshなら「%」、tcshなら「>」など
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; パスワードの入力を求める
msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

; ログイン処理を実行
msg = hostname
strconcat msg ':22 /ssh /auth=publickey /user='
strconcat msg username
strconcat msg ' /keyfile='
strconcat msg keyfile
strconcat msg ' /passwd="'
strconcat msg inputstr
strconcat msg '"'
connect msg

; ログイン後の処理
; 日時から保存ファイル名を組み立てる
logfile = "Z:\softrev\teraterm2\"
getdate timestamp "df-%Y%m%d-%H%M%S.log
strconcat logfile timestamp

logopen logfile 0 0  ; ログの記録を開始
wait remote_prompt
sendln "df"  ; 「df」コマンドを実行(1)
wait remote_prompt
logclose  ; ログ記録を終了
closett  ; 切断

 この例では公開鍵認証を使用し、接続毎にパスフレーズを入力してログインを行っているが、パスフレーズをパスワードファイルに保存しておき、自動的にログインを行うことも可能だ。前回記事の「SSHで自動ログインを行う」を参考にマクロを修正して欲しい。

 なお、リスト1のマクロでは、あくまでログとして結果をファイルに保存しているため、得られたファイルには下記のようにプロンプトやログインメッセージなどの情報が付加されてしまう。また、この方法ではテキスト形式のデータしか保存できない。

Last login: Fri Jan 15 18:34:17 2010 from *****.com
user11@*****:~$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1              3842376   1451204   2195984  40% /
tmpfs                   513300         0    513300   0% /lib/init/rw
tmpfs                   513300         0    513300   0% /dev/shm
/dev/hda2               980340      8412    922128   1% /tmp
/dev/hda4             31657192    596480  29452608   2% /var
sf-file-users:/home/users
                     570593184 225962840 338833448  41% /home/users
sf-file-groups:/home/groups
                     865014080 292452944 563773096  35% /home/groups
user11@*****:~$
最終更新:2010年06月16日 15:32