# connect

接続する。

    connect <command line parameters>

## 解説

MACRO が Tera Term とリンクされていない場合、Tera Term を起動してMACRO とリンクする。<command line parameters> は、Tera Term を起動する時のコマンドラインパラメータ。

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

MACRO が Tera Term とすでにリンクされていて、Tera Term がホストにすでに接続されている場合、このコマンドは無視される。

このコマンドの結果、リンクと接続の状態に応じて以下のうちの一つの値がシステム変数 result に格納される。

値 | 状態
--- | ---
0 | Tera Term とリンクされていない。
1 | ホストへの接続はされていないが、Tera Term へのリンクはされている。
2 | リンクおよび接続両方ともされている。

"connect" コマンドを実行する前にリンクと接続の状態を調べるには、"testlink" コマンドを使うことができる。

Tera Term と MACRO のリンクしていない状態では、"connect" と "cygconnect", "testlink" 以外の通信コマンドは実行できない。

## 接続方法

Tera Termマクロから接続する方法には、3 つの種類があります。

- telnet接続 (port 23)
- SSH1 および SSH2 接続 (port 22)
- COM port 接続

### telnet接続

    connect 'myserver:23 /nossh /T=1'
    connect 'myserver:23'

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

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

### SSH接続

    connect 'myserver /ssh'

この方法は、SSHバージョンを指定せずにSSH接続をします。

    connect 'myserver /ssh /1'
    connect 'myserver /ssh /2'

/1 と /2 のオプションは、SSH1およびSSH2であることを指定します。

    connect 'myserver /ssh /auth=password /user=username /passwd=password'
    connect 'myserver /ssh /1 /auth=password /user=username /passwd=password'
    connect 'myserver /ssh /2 /auth=password /user=username /passwd=password'
    connect 'myserver /ssh /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
    connect 'myserver /ssh /1 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
    connect 'myserver /ssh /2 /auth=publickey /user=username /passwd=password /keyfile=private-key-file'
    connect 'myserver /ssh /auth=challenge /user=username /passwd=password'
    connect 'myserver /ssh /1 /auth=challenge /user=username /passwd=password'
    connect 'myserver /ssh /2 /auth=challenge /user=username /passwd=password'

この9つの方法は、マクロからユーザ名とパスワードを渡すことにより、SSH認証ダイアログをスキップさせることができます。/auth=passwordはパスワード認証、/auth=publickeyは公開鍵認証、/auth=challengeはチャレンジレスポンス認証であることを表します。

    connect 'myserver /ssh /auth=pageant /user=username'
    connect 'myserver /ssh /1 /auth=pageant /user=username'
    connect 'myserver /ssh /2 /auth=pageant /user=username'

この3つの方法は、マクロからユーザ名を渡すことにより、SSH認証ダイアログをスキップさせることができます。/auth=pageantはPageantを使用した認証であることを表します。

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

この9つの方法は、マクロからユーザ名と認証方法を渡して、ポップアップでパスワードの入力を促します。

### COMポート接続

    connect '/C=x'

xはCOMポート番号を表します。たとえば、COM1に接続したいのなら、 connect '/C=1' とします。

出典: http://logmett.com/forum/viewtopic.php?t=28

## 例

    ; パラメータなしで Tera Term を起動
    connect ''

    ; 接続が成功しなかった場合、5秒でタイムアウトが発生
    connect 'myserver /timeout=5'

    ; Tera Term を起動し、telnet セッションを開く
    connect 'myserver:23 /nossh'

    ; Tera Term を起動し、SSH セッションを開く
    connect 'myserver /ssh'

    ; Tera Term を起動し、SSH1 セッションを開く
    connect 'myserver /ssh /1'

    ; Tera Term を起動し、SSH2 セッションを開く
    connect 'myserver /ssh /2'

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

    ; Tera Term を起動する。SSH1 セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
    connect 'myserver /ssh /1 /auth=password /user=username /passwd=password'

    ; Tera Term を起動する。SSH2 セッションを開き、ユーザ名とパスワードのプロンプトは表示されない。
    connect 'myserver /ssh /2 /auth=password /user=username /passwd=password'

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

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

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

    ; Pageantを利用して、公開鍵認証で接続する。ユーザ名とパスワードと秘密鍵ファイルのプロンプトは表示されない。
    connect 'myserver /ssh /auth=pageant /user=username'

    ; Tera Term を起動し、シリアルポート接続を開く。ポート番号は 1 から 256 の範囲内
    connect '/C=x'

    CommandLine = '111.111.11.11'
    connect CommandLine

    ; 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.

    ; 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

    [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

    [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

## 注意

1. このページの例において斜体で表示されている値を、実際の値に置き換える必要があります。
2. パスワードにはスペースを含むことが可能です。パスワードの中でスペースを表すには、パスワード全体を `"' で囲んでください。パスワードに " を含めるためには、連続した `"`("") を使用してください。
   ※パスワードにスペースを含むために "@" を使用する仕様は、4.63 から廃止されました。
3. Tera Termマクロにユーザ名とパスワードを指定した場合、そのマクロファイルをプレーンテキストとして保存したのなら、セキュリティ的に安全な場所に置く必要があることを肝に銘じておいてください。
4. ホストとの接続を終了してすぐにconnectコマンドで新しい接続を開始しようとした場合、タイミングによっては接続できない場合があります。詳しくは"切断後すぐに接続する場合の注意点"を参照してください。

## 参照

- "closett"
- "cygconnect"
- "disconnect"
- "testlink"
- "unlink"
- 切断後すぐに接続する場合の注意点
- "変数"