让装过 ROS 的人把自己一周里手动做的网络操作列出来,数下来多半不超过三样,而且每一步都一模一样:某个时刻改一次配置、某条线路出问题时换到备用、新设备加入之后补一条规则。重复而且步骤固定的动作,正是脚本最适合接手的那一类,人来做只是照着走一遍,没有判断的余地。
ROS 里哪几类动作适合交给脚本
大致分三类。一类是按时间触发的,到点就做,跟当时的状态无关。一类是按条件触发的,某个值越过了自己设的那条线才动手,比如某条代理IP线路连续异常就切到备用。一类是按固定步骤跑的,换一条线路的配置、批量改一批设备的走向,步骤固定,变的只是里面的几个名字。这三类的共同点是不需要临场判断,规则写清楚就能一直按同一套办法执行下去。
脚本省下的是每次都要重新想一遍的时间,某一次操作的那几分钟反而次要。
把动作改成脚本要走的几步
把一件手动做的事改成脚本,中间要经过几步拆解。难点不在写,而在先把动作本身拆清楚。代理IP线路的配置里,线路名和设备名就是最常变的那两个量。拆的时候还会发现一些平时没注意的细节,比如某一步依赖上一步的结果,或者有个值是上一次操作留下的;这些细节不弄清楚,脚本跑起来就会在中间某一步卡住。
把动作拆清楚,比把命令写对更费时间。
- 先用手做一遍,边做边把每一步写下来
- 挑出其中会变的量,比如时间、线路名、设备名
- 把固定步骤和可变的那几项分开写
- 在测试环境里跑通,确认结果和手做的一致
- 留一个回滚的方式,改动出问题时能退回去
ROS 里脚本的风险在于影响面。手动改错一条,只影响当下这一台;脚本改错一行,成批的对象会跟着一起变。所以上面这几步里,测试环境和回滚方式不能省,它们跟谨慎过头无关,是把影响面按在可接受范围内的必要动作。
脚本的价值在让同样的动作不用每次重新想一遍,省下的那几分钟只是附带。代理IP线路按周期调整配置这件事交出去之后,需要人管的就只剩确认结果了。
