👍
MACRO for TeraTerm 基本のSSH接続
業務で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個まで取れる(いずれかが出てくるまで待つ)
- 例えば、linuxで入力できるようになるまで待つなら
ローカルへのファイル送信
scprecv
ttlコマンドで行う
scprecv 欲しいファイルのパス ダウンロード場所
-
TeraTerm > ファイル > SSH SCR
のReceiveと同機能- Sendと同機能の
scpsend
ttlコマンドもある
- Sendと同機能の
- 踏み台がある場合、一番手前の踏み台までは
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