Hyper-V 에 XPEnology 를 설치 해서 사용을 하고
xpebot 을 개발하여 사용 하던 중 불편한 사항이 있어서 만들어 본 스크립트이다.
필자는 Windows 에 일정 시간이 되면 절전 모드로 진입 하도록 작업 스케쥴러에 등록을 해놓은 상태 이다.
그리고 집에 있는 라즈베리파이를 활용해서 필요할때 WOL 패킷을 보내 서버를 다시 시작 하도록 하여 사용을 한다.
문제는 절전모드에서 다시 시작 될때 Hyper-V 역시 VM 들을 저장된 상태에서 시작 하도록 한다는 점이다.
이렇게 시작된 VM 들 중 XPEnology 의 xpebot 은 네트워크 재연결을 시도하지 않는다.
telepot 라이브러리 단에서도 네트워크 연결이 끊겼다는 이벤트도 없다..
즉, ssh 로 접속해서 수동으로 bot.sh restart 를 해줘야 한다는것인데 여간 귀찮은 일이 아니다.
Telegram 의 경우 특정 포트로 연결을 하기 때문에 다음 스크립트를 이용해서 해당 포트가 Established 되어 있는지 체크 하고
없다면 bot 을 재시작 하도록 하는 스크립트를 만들어 보았다.
DSM 5.x 사용자는 아래의 스크립트를 사용.
#! /volume1/homes/admin/xpebot/bash # bash 경로는 각각 bash 가 존재 하는 디렉토리 경로로 변경 하여 준다. echo $(date +"%Y-%m-%d %H:%M:%S") "Telegram bot monitor script" PID=($(ps w | grep xpebot| grep -v "grep" | awk '{print $1}')) echo $(date +"%Y-%m-%d %H:%M:%S") "PID : " $PID if [ -z $PID ] then echo $(date +"%Y-%m-%d %H:%M:%S") "Telegram Bot is not connect, trying restart bot." # 아래 코드는 필히 xpebot 이 설치된 경로로 변경해 주어야 한다. /volume1/homes/admin/xpebot/bot.sh restart echo "restart" exit 0 fi COUNT=($(netstat -nap | grep $PID | grep "ESTA" | wc -l)) echo $(date +"%Y-%m-%d %H:%M:%S") "COUNT : " $COUNT if [ $COUNT -le 0 ] then echo $(date +"%Y-%m-%d %H:%M:%S") "Telegram Bot is not connect, trying restart bot." # 아래 코드는 필히 xpebot 이 설치된 경로로 변경해 주어야 한다. /volume1/homes/admin/xpebot/bot.sh restart fi
DSM 6.0 사용자는 아래의 스크립트를 사용.
#! /usr/bin/bash echo $(date +"%Y-%m-%d %H:%M:%S") "Telegram bot monitor script" PID=($(ps -ef | grep xpebot| grep -v "grep" | awk '{print $1}')) echo $(date +"%Y-%m-%d %H:%M:%S") "PID : " $PID if [ -z $PID ] then echo $(date +"%Y-%m-%d %H:%M:%S") "Telegram Bot is not connect, trying restart bot." # 아래 코드는 필히 xpebot 이 설치된 경로로 변경해 주어야 한다. /volume1/homes/admin/xpebot/bot.sh restart echo "restart" exit 0 fi COUNT=($(netstat -nap | grep $PID | grep "ESTA" | wc -l)) echo $(date +"%Y-%m-%d %H:%M:%S") "COUNT : " $COUNT if [ $COUNT -le 0 ] then echo $(date +"%Y-%m-%d %H:%M:%S") "Telegram Bot is not connect, trying restart bot." # 아래 코드는 필히 xpebot 이 설치된 경로로 변경해 주어야 한다. /volume1/homes/admin/xpebot/bot.sh restart echo "restart" fi
위 코드를 복사하여 xpebot 이 설치된 경로에 botmonitor.sh 로 저장하자.
당연히 12번쨰와 23번째 줄에 있는 /volume1/homes/admin/xpebot/bot.sh 이 부분은
xpebot 이 설치된 경로로 바꿔주어야 한다.
저장을 하고 해당 파일에 실행 권한을 주어야 한다.
chmod 755 botmonitor.sh
----------- 2016.11.29 추가 ---------
DSM 5.2 에서 아래의 작업 스케쥴러가 제대로 작동하지 않는 경우가 있다.
crontab 에 직접 등록하는 방법을 이용하자.
vi /etc/crontab
위 명령을 이용하여 crontab 파일을 연다.
가장 마지막 줄에 다음과 같이 추가 하여 준다.
* * * * * root /volume1/homes/admin/xpebot/botmon.sh >> /var/log/botmon.log
botmon.sh 경로는 각각 개인의 경로에 맞게 수정하여 준다.
넓은 간격은 탭으로 띄워준다.
모두 * 로 표기 하면 1분에 한번씩 작동 한다.
해당 파일을 저장(esc 키 한번 누르고 : (콜론)키 한번 누르고 wq 를 입력하고 엔터)
DSM 관리 페이지에서 DSM 을 재시작 하면 해당 스크립트가 1분에 한번씩 작동할 것이다.
------------------------------------
권한이 주어 졌다면 해당 스크립트를 1분에 한번씩 실행 되도록 해보자.
DSM 에 접속 하여 제어판 -> 작업 스케쥴러로 이동한다.
생성 -> 사용자 정의 스크립트를 클릭한다.
일반 탭에서는 위와 같이 설정해준다.
작업명은 xpebot monitor 라고 하자 (아무렇게나 써도 된다.)
사용자는 root
사용자 정의 스크립트는 위에서 저장했던 botmonitor.sh 파일의 전체 경로를 써준다.
스케쥴 탭으로 이동 하여 위와 같이 설정 한다.
다음 일수 후 실행 -> 매일
첫 실행시간 -> 00:00
주기 : 매 1분마다
마지막 실행 시간 -> 23:59
위와 같이 설정 후 확인 버튼을 클릭한다.
여기까지 설정 되었다면 끝이다.
이 스크립트는 1분에 한번씩 xpebot 이 실제로 네트워크에 연결 되어 있는지 체크를 하고
연결이 끊어졌다면 xpebot 을 재시작 하도록 만들어 놓은 스크립트이다.
필자와 같이 Hypver-V 를 이용해서 xpenology 를 사용하고 xpebot 을 사용하는 사용자라면 유용한 팁이 될것이라 생각된다.
'강좌 > XPEnology 활용' 카테고리의 다른 글
Synology Audio Station 알송 가사 플러그인 (33) | 2017.06.05 |
---|---|
클리앙 고기상자님 RSS 파일을 1개의 파일로 재개발 (30) | 2017.06.05 |
SurveillanceStation 에 Raspberry Pi 카메라 추가하기 (3) | 2017.01.18 |
xpebot 감시 스크립트 만들기 (13) | 2016.09.08 |
XPEnology DSM 6.0 이상에서 다운로드 스테이션 텔레그램 알림 받기 (65) | 2016.08.29 |
Git https 오류 해결 (0) | 2016.05.20 |
XPEnology SMS 알림을 텔레그램 봇으로 보내기 (3) | 2016.02.12 |
XPEnology 전용 Telegram BOT (65) | 2016.02.03 |
XPEnology SMS 알림을 텔레그램으로 보내기 (11) | 2016.01.04 |
-
prop 2016.09.19 21:53
wol을 사용중이라 껐다키면 작동을 안하길래 해당페이지 방버을 쓰려고 했으나..이상하게 작업스케쥴러에서 작동을 안하네요.
/volume2/homes/admin/xpebot/botmonitor.sh
이렇게 작성했는데 putty로 명령어를 치면 처음에는 파일없다고 나오다가 cd로 경로 들어가서 실행시킨 후 다시 위 명령어를 치면 인식해서 가져오네요. 권한도 줬는데 이유를 모르겠어요 ㅠ
그래서 그냥.. '1. bash 파일을 복사' 방법으로 쓰고 있습니다. 이건 또 되긴하네요 ㅎ
-
Acidpop acidpop 2016.09.21 09:36 신고
prop 님의 시스템이 제가 구축한 xpenology 랑 좀 달라서 그런것 같습니다.
제가 만들어 놓은 스크립트는
/bin/sh 실행 파일을 가지고 작동하도록 되어 있는데 이게 없던지 버전이 다른던지 할것 같네요.
#! /usr/bin/bash 이렇게 바꿔서 사용하셔도 됩니다.
-
shekinah 2017.01.23 22:15
강좌 남겨주신대로 해봤는데 자동으로 되지 않아서 질문 드립니다..
그대로 했는데 도저히 자동으로 되지 않아서...
일단 crontab은
------------------------------------------------------------------------------------------------------------------------
#minute hour mday month wday who command
* * * * * root /volume1/homes/Noel/xpebot/Botmonitor.sh
0 0 1 * * root /usr/syno/bin/syno_disk_health_record
22 10 * * 4 root /usr/syno/bin/synomyds --report_info
0,5,10,15,20,25,30,35,40,45,50,55 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * root /tmp/synoschedtask --run id=1
------------------------------------------------------------------------------------------------------------------------
이렇게 등록되어있고, 권한은 0775로 주었습니다.
xpebot 폴더 안에 Botmonitor.sh 파일은
------------------------------------------------------------------------------------------------------------------------
#! /volume1/homes/Noel/xpebot/bash
# bash 경로는 각각 bash 가 존재 하는 디렉토리 경로로 변경 하여 준다.
echo $(date +"%Y-%m-%d %H:%M:%S""Telegram bot monitor script"
PID=($(ps w | grep xpebot| grep -v "grep" | awk '{print $1}'))
echo $(date +"%Y-%m-%d %H:%M:%S""PID : " $PID
if [ -z $PID ]
then
echo $(date +"%Y-%m-%d %H:%M:%S""Telegram Bot is not connect, trying restart bot."
# 아래 코드는 필히 xpebot 이 설치된 경로로 변경해 주어야 한다.
/volume1/homes/Noel/xpebot/bot.sh restart
echo "restart"
exit 0
fi
COUNT=($(netstat -nap | grep $PID | grep "ESTA" | wc -l))
echo $(date +"%Y-%m-%d %H:%M:%S""COUNT : " $COUNT
if [ $COUNT -le 0 ]
then
echo $(date +"%Y-%m-%d %H:%M:%S""Telegram Bot is not connect, trying restart bot."
# 아래 코드는 필히 xpebot 이 설치된 경로로 변경해 주어야 한다.
/volume1/homes/Noel/xpebot/bot.sh restart
fi
------------------------------------------------------------------------------------------------------------------------
이렇게 해두었습니다. 그런데 아무리 살펴봐도 잘못된 것이 없는 것 같은데 작동이 안됩니다..
bash 부분은
/usr/bin/bash로 해도, ./bash로 해도 작동이 되지 않네요~ 도움 부탁드립니다~ -
-
Shekinah 2017.01.25 20:27
리붓 후 다시 작동이 안됩니다...
---------------------------------------
Noelesther> /volume1/homes/Noel/xpebot/Botmonitor.sh
2017-01-25 20:22:36 Telegram bot monitor script
2017-01-25 20:22:36 PID : 22391
2017-01-25 20:22:36 COUNT : 0
2017-01-25 20:22:36 Telegram Bot is not connect, trying restart bot.
/volume1/homes/Noel/xpebot/Botmonitor.sh: /volume1/homes/Noel/xpebot/bot.sh: ./bash: bad interpreter: No such file or directory
---------------
이렇게 뜨네요~ 직접 xpebot 폴더에 들어가서 ./Botmonitor.sh 하면 실행되지만... bash의 문제일까요~ 자동 작동이 안되네요 ㅠ-
Acidpop acidpop 2017.01.26 09:00 신고
Botmonitor.sh 를 제가 그렇게 변경 해놨었나요? ㅠㅠ
일단 bash 파일은 전체 경로를 지정해주는게 좋습니다.