那年愚人节,我差点把自己“作”没了

话说,谁年轻时没干过几件想起来就“噗嗤”一声笑出来,但当时能吓出一身冷汗的傻事呢?我这辈子最得意也最“作死”的一次恶作剧,就发生在我刚踏出校门那会儿。这事儿绝对真实,不过嘛,为了保护“共犯们”,人名咱就隐去啦。

初入职场:一个“不务正业”的程序员
刚从加州大学毕业,我,一个文科背景(至少跟计算机八竿子打不着)的愣头青,居然阴差阳错地成了一名数据库程序员。为啥?因为我找工作的大学薪水实在没啥竞争力,但福利还行,而且人家愿意培养新人——只要你对电脑有点“感觉”。我呢,好歹捣鼓过BSD/386和SunOS,加上前任升职留了个好推荐,于是,我就这么被录用了。现在想想,这大概是他们犯的第一个“错误”。
我的“战场”:古董服务器与校园信息系统
我接手的“摊子”是一台惠普的大家伙——HP 9000 K250,PA-RISC架构的服务器。那年头,服务器还都老老实实待在本地机房里,门禁森严,还得配上哈龙灭火系统,给你几秒钟逃命时间那种。K250就在楼下机房里像个巨兽一样蹲着,旁边还有管学生和教工邮箱账号的AIX RS/6000、连接外部世界的T1线路、终端服务器、庞大的Cabletron路由器和一堆电信设备。我至今还留着它替换下来的老前辈(好像是台Encore小型机)的一盘磁带做纪念。
这台K250(以及它的前辈和后辈)运行着一个“无所不能”的学生信息系统——CARS(后来改名叫Jenzabar了,估计换汤不换药)。这系统庞大复杂,底层是HP/UX 10.20操作系统和Informix数据库(暴露年龄了…)。代码五花八门,Informix的表格、屏幕、存储过程,加上它自己的文本界面库,跑着Perform屏幕、SQL、C-shell脚本,还有纯C或ESQL/C写的程序。版本控制用RCS,构建靠庞大的Makefile。我和办公室搭档分工,我负责行政管理(资源、财务、考勤等),他负责学术(成绩、教师跟踪)。我的活儿就是维护和开发这些代码,后来还得用当时的新潮脚本语言Perl给CARS写Web模块——幸好我旁听计算语言学时学过点Perl。
一个“危险”的发现
CARS还管理着校园里大部分打印机,主要是惠普LaserJet 4系列,皮实耐用,堪称经典。这些打印机都配了JetDirect网卡,连在网上。某天午休,我闲着没事翻打印机手册,偶然发现,它们液晶屏上那个显示“READY”(准备就绪)的提示信息,居然是可以改的!
起初,我也就是小打小闹,比如让老板办公室的打印机在她打印时显示个“老板好!”之类的(然后她会没好气地让我滚回去干活)。但接着,一个大胆的念头在我脑中闪过:嘿!我能访问K250上的打印机队列,而且队列目录名就是打印机的主机名,这意味着…我能定位到校园里每一台联网的LaserJet!年轻气盛,手痒难耐,这简直是送上门的“大活儿”啊!比我母校那个愚人节“暂停部分楼宇地心引力”的通知劲爆多了!我确信,我的这个“作品”必将超越经典!
“惊天”计划与实施
计划是这样的:愚人节当天,天没亮就溜进办公室,写个小脚本,遍历所有打印机队列,给每台打印机发送一串神秘代码,把“READY”消息改成“INSERT 5 CENTS”(请投币5美分)。这样一来,全校的打印机都会像收费老虎机一样,打印前跟你要钱!
脚本简单粗暴(这是真家伙,我还留着呢):
#!/bin/csh -f
cd /opt/carsi/spool
foreach i (*)
echo '^[ %-12345X@PJL RDYMSG DISPLAY="INSERT 5 CENTS"' | netto $i 9100
end
那个 ^[
是个ESC字符,netto
是我自己写的类似netcat
的小工具。就这么简单!
得强调一下:这纯粹是视觉效果!打印机其实还是好的!照样能打!但为了效果逼真,我还精心炮制了一封邮件,发给了全校管理人员的邮件列表(这封我也存着):
主题:【重要通知】关于打印机收费政策调整
内容大意: 由于打印机维护成本蹭蹭上涨,学校决定即日起对所有打印机实行按页收费。大部分打印机需每页投入5美分。可通过账户支付或等待技术人员本周内安装投币器。若办公室尚未开户,打印机将自动提示投入5美分。请先查看打印机屏幕提示。账户将在CARS系统维护,有问题请直接联系我(留了我的分机号),勿扰Helpdesk。巴拉巴拉……给您带来不便,敬请谅解。

发完邮件,设好脚本定时任务(或者手动执行了?记不清了),我就等着看好戏了。
失控的“玩笑”
一开始还挺顺利。接到几个电话,都是熟人打来的,一听是我搞鬼,都乐疯了,还称赞我“有才”。我也乐呵呵地帮他们手动把打印机提示改了回来。最绝的是,有位仁兄下午用内部邮件给我寄来一张纸,上面用那台“收费”打印机打了一行字,旁边还用胶带粘了个亮闪闪的5美分硬币!
然而,不是所有人都认识我这个“捣蛋鬼”。不认识我的人,压根没给我打电话,而是直接捅到了学校行政管理层!早上8点半,行政办公室已经乱成了一锅粥。这事儿很快传到了人力资源主管(HR头头)那里——这位是认识我的,她一个电话打过来,语气严厉:“赶紧!在CFO(首席财务官)到办公室之前,发撤回邮件,不然你就等着卷铺盖走人吧!”
我赶紧手忙脚乱地写撤回信。结果……又搞砸了!我的撤回信里说“校园管理层并未考虑按页收费”,可实际上,他们当时真的在讨论这事儿!于是,我又得撤回这封“此地无银三百两”的邮件,再发一封措辞更模糊、不提这茬儿的新撤回信。同时,赶紧把所有打印机改回“READY”。这么一折腾,直到中午,风波才算渐渐平息。办公室同事们都觉得这事儿巨搞笑,连我顶头上司,虽然嘴上说着“不像话”,嘴角也憋不住笑意。
雪上加霜与“冰河世纪”
更糟的还在后头。IT总监——也就是我老板的老板——那周正好在休假!(谁休假还远程查邮件啊?)而我呢,犯了个战术性错误:接下来那个周末加周初几天,我跑去滑雪了!(大部分时间是在初学者雪道上脸刹……)结果就是,总监度假回来,邮箱里塞满了愤怒的投诉邮件,而我这个“罪魁祸首”却不在场解释。据说我办公室搭档回忆,总监当时瞪着眼冲进办公室问:“他(指我)到底干了什么?!”
等我滑(摔)完雪回来,办公室的气氛比雪山顶还冷。那位觉得这事儿挺逗的助理总监,因为没能及时制止我,也跟着挨了批。而我,自然是头号“重犯”。于是,我拿出十二分的诚恳,到处道歉,并在之后很长一段时间里,表现得像个“三好员工”,乖得我自己都觉得不自然。
“传奇”的诞生
“冰河世纪”总算慢慢解冻。这事儿最后在官方层面不了了之,除了我的年度绩效评估上多了句“判断力欠佳”(Poor judgment)的评语。但私下里,这次恶作剧却成了校园里公认的“史上最佳”,甚至超越了之前那个“校门口保安要按人头收门票”的传说。大家都说,我这个“技术含量”高多了。
好多年后,还有人提起这事儿,都说是“传奇”。
我希望,直到现在,他们依然这么认为。