文章目录
- 黑客脚本:一个工程师把日常工作全自动化了
- 几个典型的脚本
- 为什么这个项目火了
- 技术实现
- 实际意义
黑客脚本:一个工程师把日常工作全自动化了
这个项目的 Star 数接近五万,起因是一个真实的故事。一家公司的构建工程师离职了,同事们翻他的遗留代码,发现了一堆脚本。这些脚本干的事情说出来有点离谱,但又让人觉得合理。
这个工程师有个习惯:任何一件事,如果需要超过 90 秒才能完成,他就写个脚本去自动化它。日积月累,他留下了一整套自动化工具,覆盖了生活和工作的方方面面。
几个典型的脚本
自动给老婆发消息
有个脚本叫 smack-my-bitch-up,功能是晚上 9 点以后,如果检测到他还在服务器上有活跃的 SSH 会话,就自动给老婆发一条"加班晚回"的短信。消息内容每次从一个字符串数组里随机挑选。整个过程跑在 cron 任务里,完全不需要他手动操作。
自动回复客户邮件
另一个脚本叫 kumar-asshole。它会扫描收件箱里来自特定联系人(一个叫 Kumar 的 DBA)的邮件。如果邮件里包含"help"、“trouble”、"sorry"这类关键词,脚本会自动 SSH 到客户的服务器,把 staging 数据库回滚到最新备份,然后回复一封"没事,下次注意"的邮件。
从发现问题到修复再到回复,全程无人值守。
自动请假
hangover 这个脚本也是 cron 任务,设置在特定日期运行。如果早上 8:45 服务器上没有他的交互会话,说明他没到公司,脚本就自动发一封"身体不适,今天远程办公"的邮件。理由同样是从预设列表里随机选的。
自动泡咖啡
最经典的是 fucking-coffee.sh。这个脚本等 17 秒,然后通过 telnet 连接到公司的咖啡机(没人知道那台咖啡机居然跑着 Linux 并且开了 TCP 端口),发送一条类似"sys brew"的指令。咖啡机开始做一杯中杯半脱因拿铁,再等 24 秒后出杯。这个时间刚好是他从工位走到咖啡机的时间。
为什么这个项目火了
这些脚本本身代码量不大,技术含量也算不上多高。但它们火的原因很直接:每个程序员看到都会会心一笑。
我们日常工作中有大量重复性的事情。发消息、回邮件、请假、泡咖啡,每件事单独看都不费劲,但加在一起就是一堆琐碎的负担。这个工程师的做法是把所有超过 90 秒的事情都写成脚本,用 cron 调度,让机器替他处理。
这种思维方式比脚本本身更有价值。
技术实现
项目里的脚本主要用 Bash 和 Ruby 写的。用到了 Twilio 的短信 API、Gmail 的 Ruby gem,以及标准的 cron 定时任务。环境变量配置好之后,部署就是几行命令的事。
项目也接受其他语言的实现,Python、Perl、Shell 版本都有人提交了 Pull Request。代码用的是 WTFPL 协议,基本等于随便用。
实际意义
这个项目不是那种能直接拿来用的工具。它更像是一种思路的展示:当你发现自己在重复做某件事的时候,停下来花几分钟写个脚本,长期来看能省下大量时间。
当然,自动给老婆发消息这种操作,被发现了可能会有麻烦。自动回客户邮件也要谨慎,数据库回滚这种事出问题就不是小事了。但核心理念是对的:能自动化的就不要手动。
对于程序员来说,这个项目值得翻一翻。不一定要照搬,但可以从中得到启发,看看自己日常工作中有哪些环节适合用脚本来替代。
,这个项目值得翻一翻。不一定要照搬,但可以从中得到启发,看看自己日常工作中有哪些环节适合用脚本来替代。