支持Windows和Linux系统的Python定时关机脚本

embedded/2025/2/11 7:00:28/

以下是一个支持Windows和Linux系统的Python定时关机脚本,允许设置定时关机或取消关机计划:

python">import sys
import os
import datetime
import ctypes
import redef is_admin():"""检查是否具有管理员权限"""if os.name == 'nt':try:return ctypes.windll.shell32.IsUserAnAdmin()except:return Falseelse:return os.geteuid() == 0def parse_time_argument(arg):"""解析时间参数为秒数"""# 尝试解析绝对时间 HH:MMtry:time_obj = datetime.datetime.strptime(arg, "%H:%M").time()now = datetime.datetime.now()target = datetime.datetime.combine(now.date(), time_obj)if target < now:target += datetime.timedelta(days=1)delta = target - nowreturn int(delta.total_seconds())except ValueError:pass# 处理相对时间if arg.startswith('+'):rel_time = arg[1:]# 尝试解析为分钟数try:minutes = int(rel_time)return minutes * 60except ValueError:pass# 处理带h和m的情况match = re.match(r'^(?:(\d+)h)?(?:(\d+)m)?$', rel_time)if match:hours = int(match.group(1) or 0)minutes = int(match.group(2) or 0)return (hours * 3600) + (minutes * 60)else:raise ValueError(f"无效的时间格式: {arg}")elif arg.lower() == 'now':return 0else:raise ValueError(f"无法解析的时间参数: {arg}")def main():# 系统兼容性检查if os.name not in ('nt', 'posix'):print("此脚本仅支持Windows和Linux系统。")sys.exit(1)# 权限检查if not is_admin():print("请以管理员/root权限运行此脚本。")sys.exit(1)# 参数验证if len(sys.argv) != 2:print("用法: python shutdown_timer.py [时间|cancel]")print("时间格式:")print("  HH:MM     绝对时间(如 22:00)")print("  +数字     相对分钟(如 +60 表示60分钟后)")print("  +NhNm     复合时间(如 +1h30m 表示1.5小时后)")print("  now       立即关机")print("  cancel    取消关机计划")sys.exit(1)arg = sys.argv[1]# 取消关机逻辑if arg.lower() == 'cancel':if os.name == 'nt':os.system("shutdown /a")else:os.system("shutdown -c")print("关机计划已取消。")return# 解析时间并执行关机try:seconds = parse_time_argument(arg)if seconds < 0:print("错误:时间参数无效。")sys.exit(1)# 计算关机时间shutdown_time = datetime.datetime.now() + datetime.timedelta(seconds=seconds)# 执行系统命令if os.name == 'nt':os.system(f"shutdown /s /t {seconds}")else:minutes = max(seconds // 60, 1)  # Linux至少需要1分钟os.system(f"shutdown -h +{minutes}")print(f"系统将在 {shutdown_time.strftime('%Y-%m-%d %H:%M:%S')} 关机")except ValueError as e:print(f"参数错误: {e}")sys.exit(1)if __name__ == "__main__":main()

使用方法:

  1. 设置定时关机:

    # Windows(管理员权限)
    python shutdown_timer.py 22:00      # 今晚22点关机
    python shutdown_timer.py +60        # 60分钟后关机
    python shutdown_timer.py +1h30m     # 1小时30分钟后关机
    python shutdown_timer.py now        # 立即关机# Linux(root权限)
    sudo python3 shutdown_timer.py 22:00
    sudo python3 shutdown_timer.py +120
    
  2. 取消关机计划:

    # Windows
    python shutdown_timer.py cancel# Linux
    sudo python3 shutdown_timer.py cancel
    

功能说明:

  • 支持Windows和Linux系统
  • 支持绝对时间(HH:MM格式)和相对时间(+分钟数/+NhNm格式)
  • 自动处理跨天的时间计算
  • 需要管理员/root权限运行
  • 提供清晰的错误提示和帮助信息

注意事项:

  1. Windows系统需要以管理员身份运行命令提示符/PowerShell
  2. Linux系统需要使用sudo获取root权限
  3. 立即关机操作无法撤销,请谨慎使用
  4. 时间参数区分大小写(now/cancel为小写)

http://www.ppmy.cn/embedded/161262.html

相关文章

Mp4视频播放机无法播放视频-批量修改视频分辨率(帧宽、帧高)

背景 家人有一台夏新多功能 视频播放器(夏新多功能 视频播放器),用来播放广场舞。下载了一些广场舞视频, 只有部分视频可以播放,其他视频均无法播放,判断应该不是帧速率和数据速率的限制, 分析可能是播放器不支持帧高度大于720的视频。由于视频文件较多,需要借助视频编…

DeepSeek全球第二,R1生态扩展,华为荣耀接入,OpenAI推出深度研究,谷歌Gemini 2.0发布!AI Weekly 2.3-2.9

&#x1f4e2;本周AI快讯 | 1分钟速览&#x1f680; 1️⃣ &#x1f6a8;DeepSeek发布官方声明&#xff1a;警示仿冒账号和不实信息&#xff0c;官方渠道已公布&#xff0c;谨防假冒。 2️⃣ &#x1f50d;秘塔AI集成DeepSeek-R1&#xff1a;智能搜索&推理能力升级&#…

git连接——问题

根据你提供的错误信息&#xff0c;Git 无法通过 git:// 协议连接到 GitHub。这可能是由于以下几种原因&#xff1a; 网络问题&#xff1a;某些网络环境可能会阻止 Git 协议&#xff08;git://&#xff09;的访问。代理配置问题&#xff1a;如果你在使用代理服务器&#xff0c;…

25/2/8 <机器人基础> 轨迹控制基本知识点,传动系统

轨迹控制基本知识点及例题 机器人“轨迹控制”是机器人学中的重要内容&#xff0c;主要涉及如何规划和控制机器人末端执行器或关节的运动轨迹。 1. 轨迹规划基础 知识点 轨迹定义&#xff1a;轨迹是机器人在运动过程中位置、速度、加速度随时间的变化。 轨迹规划的目标&…

aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形

“aspectFill” 是一个常用于图像和视频处理的术语&#xff0c;尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式&#xff0c;旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。 更详细的解释: Aspect Ratio (宽高比): 指的是图…

Spring Cloud 06 - 网关

Zuul 和 Gateway 文章目录 Zuul 和 Gateway一&#xff1a;网关简介0&#xff1a;为什么要引入网关1&#xff1a;网关分类2&#xff1a;网关设计 二&#xff1a;zuul1&#xff1a;Nginx vs Zuul2&#xff1a;zuul网关实现示例2.1&#xff1a;网关实现2.2&#xff1a;自定义过滤器…

使用LLaMA Factory踩坑记录

前置条件&#xff1a;电脑显卡RTX 4080 问题&#xff1a;LLaMA-Factory在运行的时候&#xff0c;弹出未检测到CUDA的报错信息 结论&#xff1a;出现了以上的报错&#xff0c;主要可以归结于以下两个方面&#xff1a; 1、没有安装GPU版本的pytorch&#xff0c;下载的是CPU版本…

PDF 2.0 的新特性

近来闲来无事&#xff0c;就想着把PDF的新标准研究研究&#xff0c;略有所得&#xff0c;和大家分享一下。 ‌PDF 2.0的主要新特性包括更高级的加密算法、改进的数字签名和权限管理机制、增强了对非罗马字符的支持&#xff0c;以及扩展了标签架构和3D建模语言“PRC”的支…