【开发提速系列】自己动手,丰衣足食


之前几篇都是单个主题的,针对某一块内容。现在这里给出的是针对某些特定问题的解决方案,可能不是很通用,但希望对各位有借鉴意义。

Expect与数据拉取脚本

个人认为expect是一个将交互脚本化的工具。
我之前遇到如下问题:通过ssh登录使用动态密码并限制命令的服务器执行一系列操作。一般来说,动态密码和命令限制导致常规的自动化手段不能用的,手动肯定可行,但是个人不认为每天没脑一样重复输个十条一模一样的命令是一件舒服的差事。所以我尝试并选择了expect。典型的expect命令如下:

set prompt "$ "
set password [lindex $argv 0]
spawn ssh foo@bar.com

expect "*Password:*" 
send "$password\n"

expect $prompt
send "foo"

expect $prompt
send "bar"

expect $prompt
exit

上面的代码通过参数输入password完成了不能直接自动化的部分,剩下的让expect帮忙输入即可。
如果说只是让expect输入几条命令,貌似没啥。实际上,我用expect是来拉取运行数据的,一次大概要输入42条命令。具体参见这里这里。使用后拉取报告时间从2h急剧缩减到3min。吐槽一句,通过ssh拉取运行数据太原始了……

Attic与验收测试

虽然最近看了FIT的一些博客说,验收测试不是想象中那么好,但是个人使用的话问题不大。具体参见这里这里,当然还有github上的代码主页。典型的脚本:

http.SetUri http://www.google.com/search
http.SetParam q foo
selenium.GetBy htmlunit
selenium.AssertCurrentTitleMatches ^foo.*$
selenium.Close

总结

至此,开发提速系列全部完成。可能由于自己工作时间不长没有太多新意或者干货,但是还是希望对各位读者有用。欢迎拍砖。