-検証環境-
Windows 10
virtualbox VM2台(Centos7)
利用技術/機能 | 利用目的 |
---|---|
Task Manager | WindowsからLinuxサーバのスクリプトを定期実行のため |
teraTermMacro | Jumpサーバにssh接続してShellscriptをKickするため |
expect | JumpサーバからTargetサーバ上のShellscriptをKickするため |
Windows bat | ttlを直にTaskManagerに設定すると不都合があっため、詳細は追って説明 |
設定は画像とは逆の流れで進めていきます。
①Targetサーバ
・処理させたいshellscript設置・メモリの使用率を取得する処理とする
②Jumpサーバ
・expectをインストール、その機能を利用したshellscript設置)
③WindowsローカルPC
・teraTermMacro (JumpサーバのShellScript Kick用作成)
・Windows bat
・TaskManager 定期実行設定
##1. TargetサーバにShellscript設置
作業対象:Targetサーバ
目的:動かしたい処理のshellscript設置(メモリ使用率を記録する処理とした)
$ cat memory-use-rate-check.sh
#!/bin/bash
# create file memory-use.log
if [[ ! -e /var/tmp/memory-use.log ]]; then
touch /var/tmp/memory-use.log
chmod 755 /var/tmp/memory-use.log
fi
# memory use rate check
MemTotal=`free | grep Mem: | awk -F " " '{print$2}'`
MemoFree=`free | grep Mem: | awk -F " " '{print$4}'`
MemUse=`expr $MemTotal - $MemoFree`
MemRate=`expr $MemUse "*" 100 / $MemTotal`
echo `date +%Y-%m-%d/%H:%M` >> /var/tmp/memory-use.log
echo "Memory Used Rate:" $MemRate"%" >> /var/tmp/memory-use.log
実行結果: ログファイルにメモリ使用率を記録するようなもの。
[vagrant@Target tmp]$ tail -n2 memory-use.log
2020-12-10/11:31
Memory Used Rate: 16%
##2. expect導入、その機能を使ったshellscript設置。
作業対象:Jumpサーバ
目的:Jumpサーバから1で設置したmemory-use-rate-check.shを遠隔実行。
2-1. expectのインストール
[vagrant@Jump tmp]$ sudo yum install expect -y
2-2.expect機能(対話応答を自動化)を使ったshellscriptを設置。
目的:Jump→targetのmemory-use-rate-check.shをKickする。
[vagrant@Jump tmp]$ cat expect-for-target.sh
#!/bin/sh
expect -c "
set timeout 2
spawn env LANG=C /usr/bin/ssh vagrant@192.168.18.21
expect \"password:\"
send \"vagrant\n\"
expect \"~]$\"
send \"cd /var/tmp\n\"
expect \"]$\"
send \"bash ./memory-use-rate-check.sh\n\"
expect \"tmp]$\"
exit 0
"
[vagrant@Jump tmp]$
##3. ローカルのWindowsPC TeratermMacroを設置
作業対象:ローカルWindowsPC
目的:WindowsPC→Jumpサーバ上のexpect-for-target.shをKick
※メモ:このttl(teraTermMacro)はパスワードを暗号化保存する方式にしています。
Expect_test> type jump-expect-kick.ttl ← catコマンドの代わりで、typeコマンドで中身表示。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
username = 'vagrant'
hostname = '192.168.18.20'
passwdfile = 'passwd.dat'
portnum = '22'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call login
call exec
call exit
end
:login
getpassword passwdfile username userpasswd
msg = hostname
strconcat msg ':portnum /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg userpasswd
strconcat msg inputstr
connect msg
return
:exec
wait '$ '
msg = 'cd '
strconcat msg '/var/tmp'
sendln msg
wait ']$ '
msg = 'bash ./expect-for-target.sh'
sendln msg
pause 8
return
:exit
wait '$ '
msg = 'exit'
sendln msg
##4. Windows Task Managerでタスクスケジュール設定を行う。
作業対象:WindowsPC
1.コマンドプロンプトで以下を実行
compmgmt.msc
⇒コンピュータの管理が起動する。
2.タスクスケジューラ
⇒タスクスケジューラライブラリを開く。
右クリック、タスクの作成を開く。
3.タスクの設定
これで完成。
-追伸-
アドベントカレンダーに急遽参加することとなり、
引き出しにあったのが最近やったことで、こういったものになりました。