用 ChatGPT 写了个备份自部署 bitwarden 数据发送到 tg bot 的脚本

查看 21|回复 0
作者:sdyung   
代码需修改三处:
[ol]
  • 修改为自己本地 bitwarden/vaultwarden 的 Data 文件夹路径
  • 修改为自己 telegram 帐号 chat id
  • 修改为自己 telegram bot token
    然后添加定时自动执行就可以了。
    [/ol]
    import os
    import shutil
    import requests
    from datetime import datetime
    # 获取当前日期和时间
    current_date = datetime.now().strftime("%Y 年%m 月%d 日")
    current_time = datetime.now().strftime("%H 点%M 分%S 秒")
    backup_date = datetime.now().strftime("%Y%m%d")  # 用于文件名的简洁日期格式
    # 文件路径和压缩包名称(使用日期命名)
    folder_to_backup = "此处修改路径为自己 bitwarden 的 DATA 文件夹路径"
    backup_zip = f"/tmp/Bitwarden_{backup_date}.zip"
    print("[1/4] 开始压缩文件夹...")
    # 压缩文件夹
    shutil.make_archive(backup_zip.replace('.zip', ''), 'zip', folder_to_backup)
    print(f"[2/4] 文件夹已成功压缩,生成的备份文件:{backup_zip}")
    # 获取备份文件大小(单位:MB ,保留两位小数)
    file_size_mb = os.path.getsize(backup_zip) / (1024 * 1024)
    file_size_text = f"{file_size_mb:.2f}MB"
    print(f"备份文件大小:{file_size_text}")
    # Telegram bot 信息
    chat_id = "此处修改为自己 telegram 帐号 chat id"
    bot_token = "此处修改为自己 telegram bot token"
    telegram_api_url = f"https://api.telegram.org/bot{bot_token}/sendDocument"
    # 推送文件和文字说明
    message_caption = (
        f"今日份 Bitwarden 自动备份成功,以下是本次备份的详细信息:\n"
        f"备份时间:{current_date} {current_time}\n"
        f"备份大小:{file_size_text}"
    )
    print("[3/4] 开始推送文件到 Telegram...")
    with open(backup_zip, 'rb') as file:
        response = requests.post(
            telegram_api_url,
            data={'chat_id': chat_id, 'caption': message_caption},
            files={'document': file}
        )
    # 检查请求是否成功
    if response.status_code == 200:
        print("[4/4] 备份文件已成功发送到 Telegram !")
        print(f"推送文件名:Bitwarden_{backup_date}.zip")
        # 删除本地的 zip 文件
        os.remove(backup_zip)
        print(f"本地备份文件 {backup_zip} 已删除。")
    else:
        print(f"[4/4] 推送失败,错误信息:{response.text}")
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部