windows脚本@SSH连接状态监听

AI绘图@一键安装

这个脚本能够实现对远程服务器SSH连接状态的监听和QQ邮箱告警,开发背景用来监听使用小米球做内网穿透带来的不稳定问题。

执行脚本

# 设置变量
# 发件邮箱
$from = "****@qq.com"
# 收件邮箱
$to = "****@qq.com"
$subject = "SSH 连接状态检测报告"
$smtpPort = 587
# 发件邮箱名称
$username = "****@qq.com"
# 发件邮箱密码
$password = "sgnbiksiqdtcbaff"

# 定义发送邮件的函数
function Send-MailMessageWithFormattedBody {
    # 接收参数
    param (
        [Parameter(Mandatory=$true)][string]$from,
        [Parameter(Mandatory=$true)][string]$to,
        [Parameter(Mandatory=$true)][string]$subject,
        [Parameter(Mandatory=$true)][string]$body
    )
    
    # 定义 HTML 模板
    $htmlTemplate = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>SSH 连接状态检测报告</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        th, td {
            text-align: left;
            padding: 8px;
            border-bottom: 1px solid #ddd;
        }
        th {
            background-color: #4CAF50;
            color: white;
        }
        .status-ok {
            font-weight: bold;
            color: #4CAF50;
        }
        .status-failed {
            font-weight: bold;
            color: #f44336;
        }
    </style>
</head>
<body>
    <h1>SSH 连接状态检测报告</h1>
    <p>$body</p>
</body>
</html>
"@

    # 发送邮件
    $mailMessage = New-Object System.Net.Mail.MailMessage $from, $to, $subject,$htmlTemplate
    $mailMessage.IsBodyHtml = $true
    # $mailMessage.Body = $htmlTemplate
    # $mailMessage.BodyEncoding = [System.Text.Encoding]::UTF8
    $smtpClient = New-Object System.Net.Mail.SmtpClient smtp.qq.com, $smtpPort
    $smtpClient.EnableSsl = $true
    $smtpClient.Credentials = New-Object System.Net.NetworkCredential($username, $password)
    $smtpClient.Send($mailMessage)
}

# 循环执行
while ($true) {
    # 检测 SSH 连接状态
    $sshStatus = Test-NetConnection -ComputerName hc701qrunjac.ngrok.xiaomiqiu123.top -Port 22 | Select-Object -ExpandProperty TcpTestSucceeded

    # 获取系统信息
    $osVersion = Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, CSDVersion, OSArchitecture
    $currentUser = Get-WmiObject -Class Win32_ComputerSystem | Select-Object UserName
    $networkAdapter = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object { $_.DeviceID -eq "1" } | Select-Object NetConnectionStatus
    $graphicsCard = Get-WmiObject -Class Win32_VideoController | Select-Object Name
    $memory = Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize

    # 根据 SSH 连接状态生成报告内容
    if ($sshStatus) {
        $sshStatusText = "<span class='status-ok'>已连接</span>"
    }
    else {
        $sshStatusText = "<span class='status-failed'>未连接</span>"
    }

    $reportBody = @"
<table>
    <tr><th>系统用户名</th><td>$($currentUser.UserName)</td></tr>
    <tr><th>操作系统</th><td>$($osVersion.Caption) $($osVersion.OSArchitecture) $($osVersion.CSDVersion)</td></tr>
    <tr><th>显卡信息</th><td>$($graphicsCard.Name)</td></tr>
    <tr><th>网络连接状态</th><td>$($networkAdapter.NetConnectionStatus)</td></tr>
    <tr><th>内存信息</th><td>$($memory.TotalVisibleMemorySize) KB</td></tr>
    <tr><th>SSH 连接状态</th><td>$sshStatusText</td></tr>
</table>
"@

    # 发送邮件
    Send-MailMessageWithFormattedBody -from $from -to $to -subject $subject -body $reportBody

    # 等待 10 分钟
    Start-Sleep -Seconds 600
}



使用步骤:

  1. 将上述脚本保存为1.ps1文件,GBK编码
  2. 使用PowerShell终端执行该文件即可;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值