You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过指定Gmail邮件触发Ubuntu系统关机?

嘿,这个远程关机的需求挺实用的!我来一步步带你实现——从指定Gmail发特定内容的邮件,就能触发Ubuntu自动关机,全程都是本地操作,不用依赖第三方服务:

实现步骤

1. 先搞定Gmail的应用专用密码

因为Gmail默认开启两步验证后,普通密码没法在脚本里直接用,得先整个应用专用密码:

  • 确保你的目标Gmail账号已经开启了两步验证
  • 登录Google账号的「安全」设置页面,找到「应用专用密码」选项
  • 生成一个专门用于邮件客户端的密码,把它记好,后面要用到

2. 安装邮件读取工具

Ubuntu上我们用fetchmail来拉取邮件,mutt来处理邮件,先安装它们:

sudo apt update && sudo apt install mutt fetchmail

3. 配置fetchmail定时读取Gmail

创建fetchmail的配置文件~/.fetchmailrc,把下面的内容填进去,记得替换自己的信息:

set daemon 60  # 每60秒检查一次新邮件
set no bouncemail
poll imap.gmail.com with proto IMAP and options ssl
user '你的目标Gmail邮箱地址' there with password '刚才生成的应用专用密码' is '你的Ubuntu用户名' here
folder 'INBOX'
keep  # 可选:保留邮件不删除,方便调试时候看记录
mda "/usr/bin/mutt -f -"

配置文件的权限必须设为600,不然fetchmail会拒绝运行:

chmod 600 ~/.fetchmailrc

4. 编写触发关机的检测脚本

创建一个脚本文件~/check_shutdown_email.sh,内容如下,记得替换指定的触发邮箱和关键词:

#!/bin/bash

# 定义允许触发关机的邮箱和触发关键词
ALLOWED_SENDER="指定的触发邮箱@gmail.com"
SHUTDOWN_KEYWORD="立即关机"

# 拉取邮件并检查发件人和内容是否匹配
fetchmail -v | grep -A 5 -B 5 "$ALLOWED_SENDER" | grep "$SHUTDOWN_KEYWORD"

# 如果匹配成功,执行关机
if [ $? -eq 0 ]; then
    sudo shutdown now
    # 可选:标记该邮件为已读,避免重复触发
    mutt -e 'set imap_user="你的目标Gmail邮箱地址"' -e 'set imap_pass="应用专用密码"' -e 'mark-read' -f imaps://imap.gmail.com/INBOX
fi

给脚本加上执行权限:

chmod +x ~/check_shutdown_email.sh

5. 设置定时任务让脚本自动运行

用crontab来让脚本每分钟自动执行一次,这样就能实时监控邮件了:

crontab -e

在打开的编辑器里添加这一行(记得替换成你的脚本路径):

* * * * * ~/check_shutdown_email.sh >> ~/shutdown_trigger.log 2>&1

这行的意思是每分钟执行一次脚本,把运行日志写到shutdown_trigger.log里,方便出问题的时候排查。

6. 测试功能&注意事项

  • 用你指定的触发邮箱,给目标Gmail发一封包含立即关机(或者你自定义的关键词)的邮件
  • 等个1分钟左右,Ubuntu就会自动关机啦
  • 额外提醒:要让sudo shutdown now不用输密码,你可以编辑sudoers文件:
    sudo visudo
    
    添加一行:
    你的Ubuntu用户名 ALL=(ALL) NOPASSWD: /sbin/shutdown
    
    这样脚本执行关机的时候就不会卡在输密码这一步了

内容的提问来源于stack exchange,提问作者Artur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:14:48