connect

【Tera Term マクロ言語】コマンドリファレンス

connect 機能

[通信コマンド]

接続する。

コマンドライン

connect <command line parameters>

機能説明

Tera Term 本体から対象ホストに接続します。
実行の前提
前提として、以下の3つの「リンクと接続の状態」で、挙動が変わります。
下記の「リンク」と「接続」については 「Tera Term の「リンク」と「接続」」 を参照してください。

リンクされていない(接続はできない)
マクロが Tera Term とリンクされていない場合 Tera Term を起動してマクロとリンクします。
<command line parameters> は Tera Term を起動する時のコマンドラインパラメータです。

リンクされているがホストに接続されていない
マクロが Tera Term とすでにリンクされていて Tera Term がホストに接続されていない場合 Tera Term をコマンドライン <command line parameters> で指定されるホストに接続させます。
Tera Term のコマンドラインパラメータについては "Tera Term Pro コマンドライン"、"TTSSH コマンドライン"を参照してください。

リンクされていてホストへ接続されている
マクロが Tera Term とすでにリンクされていて Tera Term がホストにすでに接続されている場合、このコマンドは無視されます。
<command line parameters>
コマンドラインパラメータを指定します。
これは、コマンドラインで ttermpro.exe に渡すパラメータと同一です。
その他
connect を実行する前にリンクと接続の状態を調べるには testlink を使うことができます。
Tera Term とマクロがリンクしていない状態では connect / cygconnect / testlink 以外の通信コマンドは実行できません。

この仕様のため connect 実行前に logopen*1 を実行しても失敗します。

バージョン 4.63 にてコマンドライン解析の仕様が変更されています。詳細は備考を参照してください。

パラメータの説明

指定するパラメータは以下の通りです。
パラメータパラメータ説明
<command line parameters>文字列コマンドラインパラメータを指定します

対象バージョン

全てのバージョンで利用可能です。
バージョン 4.63 より変更された機能があります。

戻り値

戻り値として以下の変数が定義されます。
変数名状態
result0Tera Term とリンクされていない。
1ホストへの接続はされていないが Tera Term へのリンクはされている。
2リンクおよび接続両方ともされている。

関連コマンド

種別:通信Ver機能の簡易説明
closettTera Term を終了させる。
cygconnect4.57以降Cygwinへ接続する。
disconnectTera Term とホストの間の通信を終了させる。
testlink現在のリンクおよび接続の状態を報告する。
unlink現在の Tera Term ウインドウと MACRO の間のリンクを断つ。

使用方法

接続方法

Tera Termマクロから接続する方法には 3 つの種類があります。
  • telnet接続 (port 23)
  • SSH1 および SSH2 接続 (port 22)
  • COM port 接続
telnet 接続
telnet サーバへのアクセスに利用します。
connect 'example.jp:23 /nossh /T=1'
connect 'example.jp:23'

オプションに /nossh を指定することを強く推奨します。このオプションがない場合 Tera Term は teraterm.ini が最後に保存されたときと同じメソッド(telnet もしくは SSH)を使って、接続しようとします。もし SSH を使って接続しようとするならば connect コマンドは失敗するでしょう。

オプションに /T=1 を使うことを推奨します。このオプションがない場合 Tera Term は teraterm.ini の Telnet の値にしたがって接続しようとします。もし Telnet の値も off の場合 Tera Term は telnet ネゴシエーションをしないので、意図したとおりの通信ができないでしょう。

また telnet は、アクセスした後にアカウント入力を行うため /user や /passwd といったオプションは利用できません。

SSH 接続
以下の方法は ssh サーバへのアクセスに利用します。
connect 'example.jp /ssh'
上の方法では SSH バージョンを指定せずに SSH 接続をします。
バージョン指定を追記する場合は、以下のようになります。
connect 'example.jp /ssh /1'
connect 'example.jp /ssh /2'
/1 と /2 のオプションは、それぞれ SSH1 および SSH2 であることを示します。
次の様に書くことも可能です。
connect 'example.jp /ssh1'
connect 'example.jp /ssh2'

次の9つの方法は、マクロからユーザ名とパスワードを渡すことにより SSH 認証ダイアログをスキップさせることができます。
connect 'example.jp /ssh /auth=password /user=username /passwd=password'
connect 'example.jp /ssh /1 /auth=password /user=username /passwd=password'
connect 'example.jp /ssh /2 /auth=password /user=username /passwd=password'
connect 'example.jp /ssh /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'example.jp /ssh /1 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'example.jp /ssh /2 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
connect 'example.jp /ssh /auth=challenge /user=username /passwd=password'
connect 'example.jp /ssh /1 /auth=challenge /user=username /passwd=password'
connect 'example.jp /ssh /2 /auth=challenge /user=username /passwd=password'

SSH 認証の指定は /auth で行っています。
以下に、指定の方法と意味をリストします。
/auth に指定する内容
/auth 指定意味
/auth=passwordパスワード認証
/auth=publickey公開鍵認証
/auth=challengeチャレンジレスポンス認証

この /passwd オプション指定ですが、実のところ OS 側で平文で管理されています。
たとえば Tera Term のログインマクロでホストへログインしたあと、コマンドプロンプトで以下を実行してみましょう。
wmic process where "name = \"ttermpro.exe\"" get name,commandline

指定しているオプションの内容を /passwd で指定しているものまで全部表示できます。

connect コマンドに対する既存の接続オプションの変数を connect_option と仮定して、次のように 2 ステップ踏むようにすると Windows 側に表示されなくなります。
sprintf2 connect_option "%s:port /auth=password /user=%s /passwd=%s" hostname username password

; launch Tera Term
connect '/DS'

; connect to server
connect connect_option

また Tera Term は pageant と連携させることが可能です。
パラメータに /passwd を利用する際は、覚えておきたいテクニックです。

まず pageant をダウンロードし、インストールしておきます。
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

pageant を利用する場合は、インストールした pageant.exe を起動しておきます。
指定している c:\usr\Identity.ppk は、秘密鍵です。
> pageant.exe c:\usr\Identity.ppk
pageant が起動し、パスフレーズを入力するためのウィンドウが表示されますので、正しく入力しておきます。
pageant は、タスクトレイに常駐します。

また、アクセスしたいホストには、公開鍵を事前に登録*2しておく必要があります。
公開鍵を登録したホストに対し pageant を利用して接続します。
connect 'example.jp /ssh /auth=pageant /user=username'
connect 'example.jp /ssh /1 /auth=pageant /user=username'
connect 'example.jp /ssh /2 /auth=pageant /user=username'
connect 'example.jp /ssh1 /auth=pageant /user=username'
connect 'example.jp /ssh2 /auth=pageant /user=username'
これら /auth=pageant の指定は Pageant を使用した認証であることを表します。
マクロからユーザ名を渡すことにより SSH 認証ダイアログをスキップさせることができます。

connect 'myserve /ssh /auth=password /user=username /ask4passwd'
connect 'example.jp /ssh /1 /auth=password /user=username /ask4passwd'
connect 'example.jp /ssh /2 /auth=password /user=username /ask4passwd'
connect 'example.jp /ssh /auth=publickey /user=username /ask4passwd /keyfile=private-key-file'
connect 'example.jp /ssh /1 /auth=publickey /user=username /ask4passwd /keyfile=private-key-file'
connect 'example.jp /ssh /2 /auth=publickey /user=username /ask4passwd /keyfile=private-key-file'
connect 'myserve /ssh /auth=challenge /user=username /ask4passwd'
connect 'example.jp /ssh /1 /auth=challenge /user=username /ask4passwd'
connect 'example.jp /ssh /2 /auth=challenge /user=username /ask4passwd'

この9つの方法は、マクロからユーザ名と認証方法を渡して、ポップアップでパスワードの入力を促します。
COM ポート接続
connect '/C=x'

x は COM ポート番号を指定します。
COM1 に接続したい場合には以下の様に指定します。
connect '/C=1'
複数の COM ポートや、ドライバの都合で 1 から始まらない場合もあり、利用の際には番号を確認すると良いでしょう。

使用例

・パラメータなしで Tera Term を起動する場合
; パラメータなしで Tera Term を起動
connect ''

・接続が成功しなかったときは 5 秒でタイムアウトを発生させる場合
connect 'example.jp /timeout=5'

・Tera Term を起動し telnet セッションを開く場合
connect 'example.jp:23 /nossh'

・Tera Term を起動し SSH セッションを開く場合
connect 'example.jp /ssh'

・Tera Term を起動し SSH1 セッションを開く場合
connect 'example.jp /ssh /1'

・Tera Term を起動し SSH2 セッションを開く場合
connect 'example.jp /ssh /2'

・Tera Term を起動し SSH セッションを開き、ユーザ名とパスワードを指定する場合
; SSH セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
connect 'example.jp /ssh /auth=password /user=username /passwd=password'

・Tera Term を起動し、明示的に SSH1 セッションを開き、ユーザ名とパスワードを指定する場合
; SSH1 セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
connect 'example.jp /ssh /1 /auth=password /user=username /passwd=password'

・Tera Term を起動し、明示的に SSH2 セッションを開き、ユーザ名とパスワードを指定する場合
; SSH2 セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
connect 'example.jp /ssh /2 /auth=password /user=username /passwd=password'

・Tera Term を起動し、SSH セッションを開き、ユーザ名とパスワードと秘密鍵ファイルを指定する場合
; SSH セッションを開き、ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'example.jp /ssh /auth=publickey /user=username /passwd=password /keyfile=private-key-file'

・Tera Term を起動し、明示的に SSH1 セッションを開き、ユーザ名とパスワードと秘密鍵ファイルを指定する場合
; SSH1 セッションを開き、ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'example.jp /ssh /1 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'

・Tera Term を起動し、明示的に SSH2 セッションを開き、ユーザ名とパスワードと秘密鍵ファイルを指定する場合
; SSH2 セッションを開き、ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'example.jp /ssh /2 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'

・Tera Term を起動し Pageant を利用した SSH セッションを開き、ユーザ名を指定する場合
; Pageant を利用して、公開鍵認証で接続する。ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
connect 'example.jp /ssh /auth=pageant /user=username'

・Tera Term を起動し、シリアルポート接続を開く場合
; ポート番号は 1 から 256 の範囲内
connect '/C=x'
・変数 CommandLine にアクセス先ホスト名または IP アドレス を格納し、アクセスする場合
CommandLine = '111.111.11.11'
connect CommandLine

・バッチファイルで Tera Term マクロから接続する場合
バッチファイル test.bat
ttpmacro.exe paramtest.ttl "192.168.3.2"
ttpmacro.exe paramtest.ttl "192.168.3.2" cal
ttpmacro.exe paramtest.ttl "192.168.3.2" uptime
ttpmacro.exe paramtest.ttl "192.168.3.2" "man ls" echo foo
ttpmacro.exe paramtest.ttl "192.168.3.2" "uname -a"
ttpmacro.exe paramtest.ttl "192.168.3.2" "cat /proc/cpuinfo"
pause
TTL ファイル paramtest.ttl
if paramcnt != 3 then
	messagebox "Argument error" "ERROR"
	end
endif

prompt = 'yutaka@sai(~) '
sprintf2 var "%s:22 /2 /ssh /auth=password /user=yutaka /passwd=yutaka" param2
messagebox var "test"
connect var
wait prompt

sendln param3
wait prompt

pause 3

sendln 'exit'
pause 3

・ホストとの接続を終了させて、別のホストに接続する場合
; exitコマンドを送って、ホストとの接続を終了する。
sendln "exit"

; Tera Termを切り離す
unlink

; 新しい接続を開始する。
connect "example.jp"

デフォルトだと切断後自動的にウィンドウを閉じる設定のため、Tera Term が閉じられる前にリンクを切ってから接続し直します。
この設定を変更している場合は、次の様に書くこともできます。
; exitコマンドを送って、ホストとの接続を終了する。
sendln "exit"

; ホスト切断処理の完了まで待つ
do
	; 10ミリ秒待つ
	mpause 10
	; 接続状態を確認する
	testlink
; まだホストと接続されている (resultが2) ならばループを繰り返す
loop while result = 2

; 新しい接続を開始する。
connect "example.jp"
なお、以下のように切断後すぐ接続しようとすると connect は Tera Term - ホスト間の接続が切れる前に接続処理を試みるため、結果的に接続処理が行われません。
; exitコマンドを送って、ホストとの接続を終了する。
sendln "exit"

; 新しい接続を開始する。
connect "example.jp"
これは sendln "exit" で exit コマンドを送ってから、実際にホストが接続を切断してくるのにタイムラグが発生するためで connect コマンドは接続が切断されていると認識しなければ、何も行いません。

  1. このページの例において /passwd=password や /keyfile=private-key-file で表示されている文字列 password や private-key-file 等は、実際の値に置き換える必要があります。
  2. パスワードにはスペースを含むことが可能です。パスワードの中でスペースを表すには、パスワード全体を `"' で囲んでください。パスワードに " を含めるためには、連続した `"`("") を使用してください。
※パスワードにスペースを含むために "@" を使用する仕様は 4.63 から廃止されました。
  1. Tera Term マクロにユーザ名とパスワードを明記した場合、そのマクロファイルをプレーンテキストとして保存したのなら、セキュリティ的に安全な場所に置く必要があります。

起動時に "New connection" ダイアログを表示させたくない場合、つぎのコマンドを利用すると表示されなくなります。
connect '/DS'
利用方法としては、次の通りです。
hostname = 'xxxx'
port     = 22
username = 'root'
password = 'password'

sprintf2 Param "%s:%d /ssh2 /auth=password /user=%s /passwd=%s" hostname port username password

connect '/DS'
connect Param

サンプル

以下のサンプルが存在します。

ssh2 ログイン自動化マクロ

また Tera Term には、以下のサンプルマクロが同梱されています。

・同梱されているサンプルマクロ ssh2login.ttl
; Sample macro for Tera Term
;  Telnet login

; open Tera Term
;   command line = 'TERATERM myhost.mydomain' (telnet)
connect 'myhost.mydomain'

; set username
UsernamePrompt = 'Username:'
Username = 'MYNAME'
PasswordPrompt = 'Password:'
; get password from file
getpassword 'password.dat' 'mypassword' Password

; login
wait   UsernamePrompt
sendln Username

wait   PasswordPrompt
sendln Password

; OK, auto login complete.

・同梱されているサンプルマクロ login.ttl
; sample macro of Tera Term
;
; File: ssh2login.ttl
; Description: auto login with SSH2 protocol
; Environment: generic

username = 'nike'
hostname = '192.168.1.3'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

msg = 'Enter password for user '
strconcat msg username
passwordbox msg 'Get password'

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg inputstr

connect msg

*2 : 「~/.ssh/authorized_keys」に追記

備考

TTSSH バージョン 2.51 より変更された機能があります。
(パスワードにスペースを含むために "@" を使用する仕様の廃止)

ヘルプの改版履歴より抜粋
Tera Term - 2009.7.5 (Ver 4.63)
TTSSH - 2009.7.5 (Ver 2.51)
コマンドライン解析の仕様を変更した。
  • スペースを渡すために@を指定する仕様を廃止した。
  • `"' を渡すために "" を指定する仕様を追加した。