『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 5624|回复: 2

[经验分享] 使用群暉任務排程表來檢查home-assistant服務是否要重啟

[复制链接]

27

主题

387

帖子

3249

积分

元老级技术达人

积分
3249
金钱
2842
HASS币
40

教程狂人

发表于 2017-11-8 16:28:24 | 显示全部楼层 |阅读模式
本帖最后由 windgo 于 2017-11-10 17:02 编辑

我安裝home-assistant和homekit都是使用群暉的docker
因為剛上手home-assistant,常常會一直改config做測試
所以服務還不太穩,有時候跑一跑就掛了,不能連線時還要進群暉重啟docker
所以就想說寫一隻程式讓他一段時間去檢查,如果連不到網頁就重啟docker
用起來還不錯,提供給大家參考

整體檢查流程:

1.在群暉內的任務排程器,設定每10分鐘執行程式檢查網頁狀態
2.如果得到http 405以外的狀態碼,則認定home-assistant服務有問題(如果有跑SSL的人請參考最下面附註部份修改)
3.程式自動重啟docker

程式說明如下:
預設是用wget抓網頁狀態碼檢查,如果想用curl的話請將curl那行拿掉#,而wget那行加上#
我的home-assistant網頁有加上登入密碼,所以home-assistant服務正常的話
檢查會得到405的狀態碼,如果連不到Server的話狀態碼是503,程式會把檢查結果405以外的狀態自動重開docker
如果你網頁沒設登入密碼的話,正常狀態碼為200
請將程式405的地方改為200
status_code.png
連進群暉,使用FTP方式或手動在/root下面編輯一個檔案check_home-assistant.sh
vi /root/check_home-assistant.sh

請依照你的狀況修改下面的your_server_url狀態碼

#!/bin/sh
#web_status="$(curl -Is http://your_server_url:8123 | head -n 1 | grep 'HTTP/1.1 405 Method Not Allowed' &> /dev/null)"
web_status="$(wget --spider -S "http://your_server_url:8123" 2>&1 | grep "HTTP/" | awk '{print $2}')"
if [ "${web_status}" != "405" ]; then
                 docker restart home-assistant
                 fi

修改使用者權限為root跟700
chown root check_home-assistant.sh
chmod 700 check_home-assistant.sh

固定關掉docker後手動執行一次程式,看會不會跳出home-assistant的字眼,表示程式已經正常執行重啟docker了
sudo /root/check_home-assistant.sh
Image_20171108_014.png

程式沒問題之後,開始到群暉裡面設定排程執行程式檢查
登入群暉 --> 控制台 -->任務排程表 --> 新增 --> 排程任務 -->使用者定義指令碼

一般
任務名稱:隨意打
帳號:root
啟用:打勾
Image_20171108_004.png

排程
在以下時間執行:每天
開始執行時間:00:00
執行頻率:每10分鐘
最後執行時間:23:50

Image_20171108_005.png

任務設定
使用者定義指令碼:/root/check_home-assistant.sh
Image_20171108_006.png

都設好後確定即可!
這樣群暉就會每10分鐘檢查docker狀態,home-assistant服務有問題就會自動幫忙重啟囉!

附註:
如果你的home-assistant加上了SSL功能,原本的程式會抓不到網頁狀態,要修改程式
vi /root/check_home-assistant.sh
內容程式碼改成下面內容(紅色的部份)

#!/bin/sh

#curl -Is http://your_server_url:8123 | head -n 1 | grep 'HTTP/1.1 405 Method Not Allowed' &> /dev/null
web_status="$(wget --spider -S "https://your_server_url:8123" --no-check-certificate 2>&1 | grep "HTTP/" | awk '{print $2}')"
if [ "${web_status}" != "405" ]; then
                 docker restart home-assistant
                 fi


评分

参与人数 2金钱 +17 收起 理由
u20074 + 5 膜拜大神!
+ 12 謝謝樓主分享

查看全部评分

回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-11-8 16:45:23 | 显示全部楼层
樓主厲害了,很好的分享,多謝多謝!
回复

使用道具 举报

30

主题

997

帖子

4149

积分

论坛元老

Rank: 8Rank: 8

积分
4149
金钱
3147
HASS币
0

活跃会员

发表于 2017-11-8 22:18:20 | 显示全部楼层
正好可以试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-22 19:56 , Processed in 0.218297 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表