使用 Python 监控 VPS 补货脚本的自动部署过程

本文介绍了如何使用 Python 编写一个监控 VPS 补货的脚本,并在后台自动运行该脚本的完整过程。

编写监控脚本

首先,我们需要编写一个 Python 脚本,用于监控 VPS 的补货情况。这个脚本将定期检查指定网页的内容,并发送通知,告知是否有货。

import requests
import time

TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_TELEGRAM_CHAT_ID"

TEST_MESSAGE = "This is a test notification. Script is running successfully."

# 定义监控目标列表
monitor_targets = [
    {
        "name": "Product 1",
        "url": "https://client.spaceberg.cc/store/seedbox-vps-france-unmetered/evoq-512-gb-nvme",
        "out_of_stock_text": "Out of Stock",
    },
    {
        "name": "Product 2",
        "url": "https://client.spaceberg.cc/cart.php?a=confproduct&i=0",
        "out_of_stock_text": "Out of Stock",
    },
    # 添加更多的监控目标...
]

def check_availability(url, out_of_stock_text):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
        "Accept-Language": "en-US,en;q=0.9",
    }
    
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        if out_of_stock_text in response.text:
            return False  # 无货
        else:
            return True  # 有货

    return False

def send_notification(message):
    telegram_url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
    data = {
        "chat_id": TELEGRAM_CHAT_ID,
        "text": message,
    }
    response = requests.post(telegram_url, json=data)
    if response.status_code != 200:
        print("Failed to send Telegram notification.")

def send_test_notification():
    send_notification(TEST_MESSAGE)

def main():
    # 检查是否需要发送测试通知
    send_test_notification_on_start = False
    
    try:
        with open("first_run.txt", "r") as file:
            first_run_status = file.read().strip()
            if first_run_status != "completed":
                send_test_notification_on_start = True
    except FileNotFoundError:
        send_test_notification_on_start = True
    
    # 发送测试通知
    if send_test_notification_on_start:
        send_test_notification()
        with open("first_run.txt", "w") as file:
            file.write("completed")
    
    while True:
        for target in monitor_targets:
            if check_availability(target["url"], target["out_of_stock_text"]):
                send_notification(f"{target['name']} is available now!")
        
        time.sleep(60)  # 每隔60秒检查一次

if __name__ == "__main__":
    main()

安装 Python 运行环境

在部署脚本之前,确保你的 VPS 上已经安装了 Python 运行环境。你可以使用以下命令安装 Python:

以下是一步一步的指南,帮助你在VPS上安装Python运行环境、所需的依赖库,并部署脚本:

  1. 连接到你的VPS:

    • 使用SSH客户端(如PuTTY)通过IP地址和SSH密钥连接到你的VPS。你可以从VPS提供商获取连接详细信息。
  2. 更新系统软件包:

    • 在连接到VPS后,运行以下命令以更新系统软件包:

      sudo apt update
      sudo apt upgrade
      
  3. 安装Python运行环境:

    • 运行以下命令以安装Python和pip包管理工具:

      sudo apt install python3 python3-pip
      
  4. 安装所需的依赖库:

    • 在VPS上安装所需的依赖库(requests):

      pip3 install requests
      
  5. 上传脚本文件:

    • 将脚本文件(例如monitor.py)上传到VPS上。你可以使用SCP命令(或其他文件传输工具)将文件从本地计算机上传到VPS。
  6. 运行脚本:

    • 在连接到VPS的终端中,切换到脚本文件所在的目录,并运行以下命令来启动脚本:

      python3 monitor.py
      
  7. 监控脚本的运行:

    • 当脚本运行时,它将定期检查产品的可用性。如果产品有货,它将使用你配置的Telegram机器人发送通知。

请注意,上述步骤是一般性的指南,根据你的VPS和操作系统配置可能会有所不同。确保在安装和配置过程中按照适用于你的系统的正确命令和指南进行操作。

另外,为了确保脚本能够持续运行,你可以使用一些工具(如nohup)或进程管理器(如systemd)将脚本设置为后台运行,并在VPS重启后自动启动脚本。

希望这些指南对你有所帮助!如有任何进一步的问题,请随时提问。

测试监控脚本

在部署脚本之前,先测试监控脚本是否正常工作。运行脚本并检查是否收到了预期的通知。

image-20230709163147537

后台运行运行脚本

为了将脚本作为后台服务运行,我们将创建一个 systemd 服务单元文件。在该文件中,我们将定义服务的名称、描述、执行脚本的命令等信息。

要让这个脚本一直在后台运行,你可以使用一些工具或技术来实现。下面是两种常见的方法:

  1. 使用 nohup 命令:

    • 运行以下命令来启动脚本,并将其置于后台运行:

      nohup python3 monitor.py &
      
    • 使用该命令后,即使你关闭了终端或断开了 SSH 连接,脚本仍将继续在后台运行。输出将被重定向到名为 nohup.out 的文件中。

  2. 使用 systemd 服务:

    • 创建一个 systemd 服务单元文件来管理脚本的运行。

    • /etc/systemd/system/ 目录下创建一个名为 monitor.service 的文件,并将以下内容添加到文件中:

      [Unit]
      Description=Monitor Script
      After=network.target
      
      [Service]
      ExecStart=/usr/bin/python3 /path/to/monitor.py
      WorkingDirectory=/path/to/
      StandardOutput=inherit
      StandardError=inherit
      Restart=always
      User=your_username
      
      [Install]
      WantedBy=multi-user.target
      
    • 替换 ExecStart 中的 /path/to/monitor.py 为你实际的脚本路径,替换 WorkingDirectory 中的 /path/to/ 为脚本所在的目录路径,将 User 替换为你的用户名。

    • 保存并关闭文件。

    • 运行以下命令以启用服务并启动脚本:

      sudo systemctl enable monitor.service
      sudo systemctl start monitor.service
      
    • 使用以下命令检查服务状态:

      sudo systemctl status monitor.service
      
    • 如果一切正常,你应该看到脚本正在运行,并且系统会自动管理它的重启和启动。

通过这些方法,你可以确保脚本在后台持续运行,即使你断开了 SSH 连接或重新启动了 VPS。

请注意,上述方法的实际操作可能会因你的系统配置和环境而有所不同。确保按照适用于你的系统的正确命令和指南进行操作。

希望这能帮到你!如果还有其他问题,请随时提问。

结论

通过这个简单的步骤,我们成功地使用 Python 编写了一个监控 VPS 补货的脚本,并通过 systemctl 在后台自动运行。这使我们能够实时监控 VPS 的补货情况,以便及时采取行动。

希望本文能够帮助你实现自动监控 VPS 补货的需求。祝你成功!

最后修改:2023 年 11 月 10 日
如果觉得我的文章对你有用,请随意赞赏