LoginSignup
5
4

More than 5 years have passed since last update.

TeraTermでローカルPCからファイルを送り込んで実行するバッチファイル

Last updated at Posted at 2018-10-29

要件

ローカルPCでcsvファイルを作成して、Linuxサーバに送信してそのファイルをインプットに処理を実行したい。
引数とかちょっと苦労したので備忘録。

やり方

Tera Termのマクロ機能で自動ログイン→scpでファイル転送→コマンド実行→exitを実行する。

teralogin.ttl
;=====================================================================
; 接続情報 引数[2][4]からセット
;=====================================================================

; コマンドオプション組立て
COMMAND = params[2]
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND params[3]
strconcat COMMAND ' /passwd='
strconcat COMMAND params[4]

; 接続
connect COMMAND
;; 接続完了を待つ(環境に合わせて待つ文字列は調整必要)
wait '$'
sendln '. ~/.bashrc'

; ファイル送信完了を確認する
SOURFILE = 'D:\DATA.csv'
DESTFILE = '~/DATA'

;; ファイル送信
scpsend SOURFILE DESTFILE
;; ファイル送信プロセス確認
do
; 5000ミリ秒休止
  mpause 5000
  sprintf2 str 'ps -ef |grep -v grep |grep -c scp'
  sendln str
; 文字列を含む行を待つ
  waitln '0' '1'
loop while result != 1
;; ファイル送信が完了すると次のマクロを実行
;;; 実行したいコマンドを記述。
sendln 'chgrp datagrp ' DESTFILE
sendln 'ls -l' DESTFILE
;; マクロ終了

;; 画面を閉じる
;;sendln 'exit'
end

※並行で長時間のscpが動いているとそれに合わせてwaitが掛かり続けます(状況に合わせて調整してください)。

ttlファイルに合わせて、引数を渡す。
マクロファイル名が引数[1]となります。
引数[2]=ホスト名
引数[3]=ユーザー名
引数[4]=パスワード

kidou.bat
rem @echo off
set macro="D:\teralogin.ttl"

"C:\Program Files\teraterm\ttpmacro.exe" %macro% 192.168.77.123 USERID PASSWD

パスワードを都度入力するには

入力ボックスを出して、params[4]の代わりに編集する。
工夫すれば、引数で渡されたら入力は無しにも出来る。

teralogin.ttl(一部)
;; パスワードを要求
inputbox 'パスワードを入力してください' 'TeraTerm ログイン'
PASSWORD = inputstr 
strlen PASSWORD
if result = 0 then 
    messagebox 'パスワードが入力されていません' 'TeraTerm ログイン' 
    end 
endif

; コマンドオプション組立て
COMMAND = params[2]
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND params[3]
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
;;strconcat COMMAND params[4]

; 接続
connect COMMAND
(以下同じ)
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4