適用于自己有服務器情況,ssh定時登錄到serv00,并在登錄成功后發送郵件通知
msmtp 和 mutt安裝
需要安裝msmtp 和 mutt這兩個郵件客戶端并配置,參考如下文章前幾步是講配置這倆客戶端的,很簡單,不再贅述
用Shell腳本實現Halo博客系統全站定時備份,并將備份文件發送至郵箱存儲
可能有些系統沒有裝sshpass,需要apt install sshpass
核心腳本
創建serv00.sh腳本
#!/bin/bash# 清理mutt臨時文件
cat /dev/null > ~/sentecho "開始 SSH 連接嘗試"# 從 .env 文件加載環境變量
if [ -f .env ]; then# 使用 source 命令加載 .env 文件中的變量source .env
elseecho "錯誤:未找到 .env 文件,請確保 .env 存在并正確配置。"exit 1
fi# 定義一個函數來處理 SSH 連接
function try_ssh_connection {local server=$1local user=$2local password=$3local label=$4local message=""echo "正在嘗試連接到 $server,用戶名:$user(連接:$label)"timeout 30 sshpass -p "$password" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt "$user@$server" "echo \"Hello from $label\"; date; sleep 3"result=$?if [ $result -eq 124 ]; thenecho "錯誤:$label 連接超時"message="Serv00保活SSH連接超時!"elif [ $result -ne 0 ]; thenecho "錯誤:$label 連接失敗"message="Serv00保活SSH連接失敗!"elseecho "$label 連接成功!"message="Serv00保活SSH連接成功!"fi# 發送郵件通知echo -e "狀態: $message\n\nSSH連接: $label\n連接到: $server\n用戶名: $user\n面板地址: https://panel13.serv00.com/\n執行器: ***" | mutt -s "$MAIL_SUBJECT" "$MAIL_TO"echo "郵件通知已發送!"sleep 3
}# 遍歷所有 SSH 配置并進行連接嘗試
# 假設最多有 10 個用戶配置(可以根據需要修改)
for idx in $(seq 1 10); doserver_var="SSH_SERVER_$idx"user_var="SSH_USER_$idx"pass_var="SSH_PASS_$idx"label_var="SSH_LABEL_$idx"# 動態獲取環境變量的值server="${!server_var}"user="${!user_var}"password="${!pass_var}"label="${!label_var}"# 如果某些變量為空,說明該用戶配置不存在,跳過當前循環if [ -z "$server" ] || [ -z "$user" ] || [ -z "$password" ] || [ -z "$label" ]; thencontinuefitry_ssh_connection "$server" "$user" "$password" "$label"
doneecho "所有 SSH 連接嘗試已完成。"
sleep 3
echo "腳本運行完畢,正在退出..."
sleep 3
exit 0
創建.env文件用于存儲敏感信息
# 郵件配置
MAIL_TO=發給誰的郵箱
MAIL_SUBJECT="SSH 連接狀態通知"# SSH 配置(動態編號)
SSH_SERVER_1=連接地址
SSH_USER_1=用戶名
SSH_PASS_1="用戶密碼"
SSH_LABEL_1="標記"SSH_SERVER_2=連接地址
SSH_USER_2=用戶名
SSH_PASS_2="用戶密碼"
SSH_LABEL_2="標記"
有多個就變序號就可以,另外超過10個,改一下上面腳本的for idx in $(seq 1 10); do
測試腳本
測試 bash 腳本名
即可,成功執行如下圖,檢查郵箱是否收到郵件
從serv00的面板可以確定是否登錄成功
配置定時任務
參考這里,只需把腳本位置換掉即可
參考:當你注冊了很多個Serv00需要SSH登錄保活時,腳本來了