解析の実行を自動化!!その2
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
サーバーにアクセスして、何か作業をする時、普段使っているパソコンが Windows OS だという人には気の毒な事にサーバーの OS は Linux や Unix 場合が多く、コマンドライン操作が必要になってきたりします。
私も会社のパソコンが Windows OS で、構造解析などを行うときは Unix がインストールされている計算サーバーで行います。
その時は TeraTerm というターミナルソフトを使って Windows から操作します。
正直、気分じゃ無い時の方が多いです。
なので、自動化しましょう。
サーバー作業の自動化
TeraTerm マクロ
いきなりですが、ソースコードを示します。書き直しを考え中である部分がありますが、作業内容によって変わってくる部分なので、書き直し方を検討しています。
私も手探りで作成したので、コメントで解説を入れて分かりやすくしたつもりです。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TTLによる計算サーバーへのlog in
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermからサーバーへの接続はconnectコマンドを使用します。
; サーバー情報と接続方法
; サーバーIP:192.168.1.1
; サーバー接続Port:22
; 接続方法:秘密鍵接続
; ユーザー名:test_name
; パスワード:test_pass
; 秘密鍵パス:C:\Sample\prvtKey
connect '192.168.1.1:22 /ssh /2 /auth=publickey /user=test_name /passwd=test_pass /keyfile="C:\Sample\prvtKey"'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermが入力待ちになるまで待機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermの待機はwaitコマンドを使用します。
wait "$"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermからディレクトリ移動
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermからサーバーのディレクトリ移動はsendlnコマンドでcdコマンドをサーバーへ送ります。
; サーバー情報
; 作業パス:/data/calc
sendln "cd /data/calc"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermが入力待ちになるまで待機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermの待機はwaitコマンドを使用します。
wait "$"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 計算サーバーに新規フォルダを作成
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermから計算サーバーでの新規フォルダの作成はsendlnコマンドでmkdirコマンドを実行します。
; サーバー情報と引数
; カレントディレクトリ:/data/calc
; 今日の日付:2017年11月29日
: 今の時刻:14:28:12
; param2:modelA
getdate datetime '_%y%m%d-%H%M%S'
makeDir = "mkdir "
strconcat makeDir param2
strconcat makeDir datetime
; makeDir=modelA_20171129-142812
sendln makeDir
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermが入力待ちになるまで待機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermの待機はwaitコマンドを使用します。
wait "$"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermからディレクトリ移動
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
currentDir = "/data/calc"
strconcat currentDir "/"
strconcat currentDir param2
strconcat currentDir datetime
; currentDir="/data/calc/modelA_20171129-142812"
moveToFoler ="cd "
strconcat moveToFoler currentDir
; moveToFoler="cd /data/calc/modelA_20171129-142812"
sendln moveToFoler
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermが入力待ちになるまで待機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermの待機はwaitコマンドを使用します。
wait "$"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 解析に必要な設定ファイルのアップロード
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermから計算サーバーへのファイル送信はscpsendコマンドを実行します。
; scpsend '転送したいファイル名' '転送先ディレクトリ'
; 引数
; param3:C:\job\modelA\
; param4:AnalysisInput.dat
; param5:RunShell
sendFileA = param3
strconcat sendFileA param4
scpsend sendFileA currentDir
sendFileB = param3
strconcat sendFileB param5
scpsend sendFileB currentDir
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ファイルの送信完了を確認する
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; もうこれは呪文ということで…
do
mpause 5000
sendln 'ps -ef |grep -v grep |grep -c scp'
waitln '0' '1'
loop while result != 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 計算シェルの実行
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sendln "sh RunShell"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermが入力待ちになるまで待機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermの待機はwaitコマンドを使用します。
wait "$"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermを休止
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermを8000ミリ秒休止する。
; psコマンドとgrepで書き直すことを検討中です。
mpause 8000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 解析結果のファイルのダウンロード
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermで計算サーバーからのファイル受信はscprecvコマンドを実行します。
; scprecv '受信したいファイル名' '受信先ディレクトリ'
; 引数
; param3:C:\job\modelA\
; param5:AnalysisOutput.dat
wantFile = currentDir
strconcat wantFile "/"
strconcat wantFile param5
receiveDir = param3
strconcat receiveDir param5
scprecv wantFile receiveDir
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 計算したファイルのあるフォルダパスをテキストファイルでレポートとしてローカルに保存する。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; テキストファイルの作成、書き込み、保存はそれぞれfilecreate、filewriteln、filecloseコマンドを実行します。
; 引数
; param3:C:\job\modelA\
; param5:AnalysisOutput.dat
outputFile = param3
strconcat outputFile "Report.txt"
strMSG = "/data/calc"
strconcat strMSG "/"
strconcat strMSG param2
strconcat strMSG datetime
filecreate fh outputFile
filewriteln fh strMSG
fileclose fh
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermを休止
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermを5000ミリ秒休止する。
; psコマンドとgrepで書き直すことを検討中です。
mpause 5000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTerm の終了
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TeraTermと計算サーバーの接続の終了はsendlnコマンドでexitコマンドを実行します。
sendln "exit"
以上