👍

MACRO for TeraTerm 基本のSSH接続

2022/09/03に公開

業務でTeraTermを使用する機会があったので、TeraTermマクロの基本的なSSH接続とファイルのやりとりについてまとめます。

SSH接続

1段目

最初の接続(TeraTermの"新しい接続")は connect ttlコマンドで行う

HOSTADDR = '1.1.1.1'
USERNAME = 'hoge'
PASSWORD = 'huga'

COMMAND = HOSTADDR
strconcat COMMAND ' /ssh /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD

connect COMMAND
  • connect の引数は 1.1.1.1 /ssh /auth=password /user=hoge /passwd=huga のような形式
  • connect は引数が1つなので、事前に strconcat ttlコマンドで結合しておく

2段目以降

踏み台がある場合、2段目以降の接続はいつも通り ssh linuxコマンドを実行する形で行う

HOSTADDR = '2.2.2.2'
sendln 'ssh ' HOSTADDR 
wait 'password'
sendln PASSWORD
  • sendln ttlコマンドで、linuxコマンドの実行(入力+改行)
    • 可変長の引数を単純に結合して実行するので、 strconcat ttlコマンドで事前に組み立てる手順は不要
  • wait ttlコマンドは、「その文字が送られてくるまで待つ」
    • 例えば、linuxで入力できるようになるまで待つなら wait '$' のようにする
    • 引数は10個まで取れる(いずれかが出てくるまで待つ)

ローカルへのファイル送信

scprecv ttlコマンドで行う

scprecv 欲しいファイルのパス ダウンロード場所
  • TeraTerm > ファイル > SSH SCR のReceiveと同機能
    • Sendと同機能の scpsend ttlコマンドもある
  • 踏み台がある場合、一番手前の踏み台までは scp linuxコマンドで持ってくる
  • 非同期処理なので注意(TeraTerm単体では、同期処理でのローカルとのファイルやり取りは難しそう)
  • bash上で scprecv と入力しても「コマンドが見つかりません」と言われるだけなので注意(1敗)

ファイル名のユニーク化

getdate ttlコマンドが用意されているので、これを使うのが楽

getdate DATE '%Y%m%d_%H%M%S_'

LOCAL_FILE_DIR = 'c:\Users\user\Downloads'
FILE_NAME = 'hogehoge.txt'

strconcat LOCAL_FILE_DIR DATE
strconcat LOCAL_FILE_DIR FILENAME
  • getdate 格納先の変数 '日付フォーマット' の形式
  • 日付フォーマットは strftime

Discussion