解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

解析の実行を自動化!!その2




こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。




この記事の目次




目的


サーバーにアクセスして、何か作業をする時、普段使っているパソコンが Windows OS だという人には気の毒な事にサーバーの OS は LinuxUnix 場合が多く、コマンドライン操作が必要になってきたりします。
私も会社のパソコンが 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"




コメント

サーバーでの作業は定型的なものが多い印象ですので、 Windows OS を使っている人なら TeraTermTTL を少し使えるだけで、色々な自動化が出来そうだと思います。




以上