serv00 ssh登錄保活腳本-郵件通知版

適用于自己有服務器情況,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 腳本名即可,成功執行如下圖,檢查郵箱是否收到郵件

image.png

從serv00的面板可以確定是否登錄成功
image.png

image.png

配置定時任務

參考這里,只需把腳本位置換掉即可

參考:當你注冊了很多個Serv00需要SSH登錄保活時,腳本來了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908740.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908740.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908740.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端 Electron 桌面應用學習筆記

前端 Electron 桌面應用學習筆記 介紹Electron是什么?為什么選擇Electron?創建你的第一個桌面應用程序啟動項目運行結果截圖打開調試面板方法生命周期函數常用配置配置窗口標題配置小圖標隱藏菜單欄關閉調試面板是否可以使用Node.js隱藏 Electron 標題、小圖標和菜單欄獲取窗…

LeetCode - 94. 二叉樹的中序遍歷

題目 94. 二叉樹的中序遍歷 - 力扣(LeetCode) 什么是中序遍歷 二叉樹的中序遍歷是按照"左-根-右"的順序訪問二叉樹中的所有節點。 具體過程: 先遍歷左子樹(遞歸)然后訪問根節點最后遍歷右子樹&#xff…

PyTorch——搭建小實戰和Sequential的使用(7)

import torch from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linearclass TY(nn.Module):def __init__(self):"""初始化TY卷積神經網絡模型模型結構:3層卷積池化,2層全連接設計目標:處理32x32像素的…

C#、VB.net——如何設置窗體應用程序的外邊框不可拉伸

以Visual studio 2015為例,具體操作如下: 1、將窗體的“FormBorderStyle”屬性值修改為“FixedSingle”: 2、點擊“格式”——“鎖定控件”: 這樣生成的程序邊框即可固定住,無法拉伸。

深入了解NIO的優化實現原理

網絡 I/O 模型優化 網絡通信中,最底層的就是內核中的網絡 I/O 模型了。隨著技術的發展,操作系統內核的網絡模型衍生出了五種 I/O 模型,《UNIX 網絡編程》一書將這五種 I/O 模型分為阻塞式 I/O、非阻塞式 I/O、I/O 復用、信號驅動式 I/O 和異步…

【前端】vue3性能優化方案

以下是Vue 3性能優化的系統性方案,結合核心優化策略與實用技巧,覆蓋渲染、響應式、加載、代碼等多個維度: ?? 一、渲染優化 精準控制渲染范圍 v-if vs v-show: v-if:條件為假時銷毀DOM,適合低頻切換場景&…

在MATLAB中使用自定義的ROS2消息

簡明結論: 無論ROS2節點和MATLAB運行在哪,MATLAB本機都必須擁有自定義消息源碼并本地用ros2genmsg生成,才能在Simulink里訂閱這些消息。只要你想讓MATLAB或Simulink能識別自定義消息,必須把消息包源碼(.msg等)拷到本機指定目錄&a…

spring重試機制

數據庫死鎖處理與重試機制實現指南 1. 業務場景 1.1 問題現象 高并發批量數據處理時頻繁出現數據庫死鎖主要發生在"先刪除歷史數據,再重新計算"的業務流程中原有逐條處理方式:list.forEach(item -> { delete(); calculate(); }) 1.2 死…

QEMU源碼全解析 —— 塊設備虛擬化(24)

接前一篇文章:QEMU源碼全解析 —— 塊設備虛擬化(23) 本文內容參考: 《趣談Linux操作系統》 —— 劉超,極客時間 《QEMU/KVM源碼解析與應用》 —— 李強,機械工業出版社 特此致謝! QEMU寫入一個文件的完整過程 前邊用了十來篇文章的篇幅,解析了QEMU啟動過程中的存儲…

java中static學習筆記

較重要知識點 static修飾的變量是共享的在類加載時創建可以不通過實例來訪問靜態方法只能訪問靜態的成員和方法;而非靜態的可以訪問靜態的和非靜態的。靜態方法一般用在通用的方法,這樣方便調用,不然一個通用的方法每一次調用都要創建實例&a…

快刀集(1): 一刀斬斷視頻片頭廣告

一刀流:用一個簡單腳本,秒殺視頻片頭廣告,還你清爽觀影體驗。 1. 引子 作為一個愛生活、愛學習、愛收藏高清資源的老碼農,平時寫代碼之余看看電影、補補片,是再正常不過的事。 電影嘛,要沉浸,…

spring中的@KafkaListener 注解詳解

KafkaListener 是 Spring Kafka 提供的一個核心注解,用于標記一個方法作為 Kafka 消息的消費者。下面是對該注解的詳細解析: 基本用法 KafkaListener(topics "myTopic", groupId "myGroup") public void listen(String message)…

多區域協同的異地多活AI推理服務架構

🌐多區域協同的異地多活AI推理服務架構 #mermaid-svg-TTnpRKKC7k3twxhE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-TTnpRKKC7k3twxhE .error-icon{fill:#552222;}#mermaid-svg-TTnpRKKC7k3twxhE .er…

極客時間:在 Google Colab 上嘗試 Prefix Tuning

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

Android設備推送traceroute命令進行網絡診斷

文章目錄 工作原理下載traceroute for android推送到安卓設備執行traceroutetraceroute www.baidu.com Traceroute(追蹤路由) 是一個用于網絡診斷的工具,主要用于追蹤數據包從源主機到目標主機所經過的路由路徑,以及每一跳&#x…

【Linux應用】Linux系統日志上報服務,以及thttpd的配置、發送函數

【Linux應用】Linux系統日志上報服務,以及thttpd的配置、發送函數 文章目錄 thttpd服務安裝thttpd配置thttpd服務thttpd函數日志效果和文件附錄:開發板快速上手:鏡像燒錄、串口shell、外設掛載、WiFi配置、SSH連接、文件交互(RADX…

Linux 內核內存管理子系統全面解析與體系構建

一、前言: 為什么內存管理是核心知識 內存管理是 Linux 內核最核心也最復雜的子系統之一,其作用包括: 為軟件提供獨立的虛擬內存空間,實現安全隔離分配/回收物理內存資源,維持系統穩定支持不同類型的內存分配器,最優…

鼠標的拖動效果

1、變量的設置 let isDragging false; let startX; let startY; let endX; let endY; let box null;isDragging : 表示是否推拽startX、startY:表示起始坐標,相對于元素endX、endY:表示結束坐標,相對于元素box&…

SwaggerFuzzer:一款自動化 OpenAPI/Swagger 接口未授權訪問測試工具

SwaggerFuzzer 🌐 一款自動化 OpenAPI/Swagger 接口未授權訪問測試工具🚀 工具介紹:SwaggerFuzzer? 核心功能亮點🚀 快速使用🧰 支持參數 📌 項目結構📥 獲取與下載 🌐 一款自動化 …

文獻閱讀:Exploring Autoencoder-based Error-bounded Compression for Scientific Data

目錄 論文簡介動機:為什么作者想要解決這個問題?貢獻:作者在這篇論文中完成了什么工作(創新點)?規劃:他們如何完成工作?離線訓練階段:在線壓縮階段 理由:通過什么實驗驗證它們的工作…