Windows에서 Linux 서버에서 스크립트를 정기적으로 실행하는 방법 확인
- 검증 환경-
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 설치
작업 대상: 대상 서버
목적 : 움직이고 싶은 처리의 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 [email protected]
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. 작업 설정
이것으로 완성.
-추신-
어드벤트 캘린더에 갑자기 참가하게되어,
서랍에 있었던 것이 최근에 한 것으로, 이런 것이 되었습니다.
Reference
이 문제에 관하여(Windows에서 Linux 서버에서 스크립트를 정기적으로 실행하는 방법 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/showa-engine/items/c91638d1c82b3cfbe62c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)