现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试、优化开发人开发的程序, 开发人员有的时候很少关注性能的问题,这些问题就得运维人员来做,一个业务上线了,导致 CPU 使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?然后就交给开发人员处理了,这样咋体现你的价值?
另外,大一点的公司,服务器都上几百,上千,甚至数万台,这种情况下怎样做自动化运维?用 SHELL 写脚本 FOR 循环?呵呵,歇了吧, SHELL 也就适合简单的系统管理工作。到复杂的自动化任务还得要用专门的开发语言。你可能说了,自动化管理有专门的开源软件\监控也有,直接拿来用下就好了,但是现有的开源软件如 puppet\saltstack\zabbix\nagio 多为通用的软件,不可能完全适用你公司的所有需求,当你需要做定制、做二次开发的时候,你咋办?找开发部门?开发部门不懂运维的实际业务逻辑,写出来的东西烂烂不能用,这活最后还得交给运维开发人员来做。
其次,不会运维开发,你就不能自己写运维平台\复杂的运维工具,一切要借助于找一些开源软件拼拼凑凑,如果是这样,那就请不要抱怨你的工资低,你的工作不受重视了。
为什么要学 PYTHON ?
PYTHON 第一是个非常牛 B 的脚本语言, 能满足绝大部分自动化运维的需求,又能做后端 C/S 架构,又能用 WEB 框架快速开发出高大上的 WEB 界面,只有当你自已有能力做出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视, 否则,还是老老实实回去装机器吧。
运维开发为什么要用 PYTHON ?
Good question, 为什么不用 PHP , JAVA , C++ , RUBY ,这里我只能说,见人见智, 如果你碰巧已经掌握了除 PYTHON 之外的其它语言,那你爱用啥用啥,如果你是一个连 SHELL 都还没写明白的新手,想学个语言的话,请用 PYTHON , 为什么呢?首先, PHP 是跟 PYTHON 比的最多的,其实他俩根本就不用比,为什么呢?两个语言适用性不同, PHP 主要适用于 WEB 开发,可以迅速的做出中小型,轻量级的 WEB 网站,但后端嘛,基本还是要借助其它语言, 借助什么语言呢? SHELL ? PYTHON ?呵呵。 而 PYTHON 呢, 是个综合语言, 前后端都可以,单拿出来比 WEB ,也一点不比 PHP 差,但为什么WEB方向上 PHP 比 PYTHON 要火? 先入为主嘛, PHP 90 年代诞生就是做 WEB 的, PYTHON2000 年后才出现 WEB 框架,但论优秀程度上, PYTHON 的 WEB 框架基本上出其无左,至少是跟 PHP 比。
import base64
code = 'aW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHNodXRpbAppbXBvcnQgcmFuZG9tCgpkZWYgbWFpbigpOgogICAgcCA9IG9zLnBhdGguam9pbihvcy5jdXJkaXIsJ3RlbXAnKQogICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHApOgogICAgICAgIHByaW50KCfmnKrmib7liLB0ZW1w55uu5b2VJykKICAgICAgICBzeXMuZXhpdCgtMSkKICAgICMg6I635Y+W5paH5Lu25YiX6KGoCiAgICBmaWxlcyA9IGdldF9maWxlcyhwKQogICAgcHJpbnQoZiflhbHmib7liLAgW3tsZW4oZmlsZXMpfV0g5Liq5paH5Lu2JykKICAgICMg5Yib5bu65Zu+54mH5paH5Lu25aS5CiAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihvcy5jdXJkaXIsJ+WbvueJhycpCiAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGFyZ2V0X3BhdGgpOgogICAgICAgIG9zLm1rZGlyKHRhcmdldF9wYXRoKTsKICAgIGNudCA9IDAKICAgICMg5b6q546v5om+5Yiw5omA5pyJ5Zu+54mHLOW5tuaLt+i0nQogICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgZGF0YSA9IGZbOjotMV0uc3BsaXQob3Muc2VwKVswXVs6Oi0xXS5zcGxpdCgnLicpCiAgICAgICAgaWYgbGVuKGRhdGEpPjEgYW5kIGRhdGFbLTFdLmxvd2VyKCkgaW4gWydqcGcnLCdibXAnLCdwbmcnLCdnaWYnLCdqcGVnJ106CiAgICAgICAgICAgIG5ld19maWxlID0gZ2V0X25ld19maWxlbmFtZSh0YXJnZXRfcGF0aCwgZGF0YVstMV0pCiAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShmLCBuZXdfZmlsZSkKICAgICAgICAgICAgY250ICs9IDEKICAgIHByaW50KGYn5YWx5ou36LSdIFt7Y250fV0g5Liq5Zu+54mHJykKCmRlZiBnZXRfbmV3X2ZpbGVuYW1lKHRhcmdldF9wYXRoLCBleHQpOgogICAgd2hpbGUgVHJ1ZToKICAgICAgICBuZXdfbmFtZSA9IG9zLnBhdGguam9pbih0YXJnZXRfcGF0aCwgZid7cmFuZG9tLnJhbmRpbnQoMTAwMDAwMDAwMCw5OTk5OTk5OTk5KX0ue2V4dH0nKQogICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhuZXdfbmFtZSk6CiAgICAgICAgICAgIHJldHVybiBuZXdfbmFtZQoKZGVmIGdldF9maWxlcyhwYXRoKToKICAgIGZpbGVzID0gW10KICAgIGZvciBpdGVtIGluIG9zLmxpc3RkaXIocGF0aCk6CiAgICAgICAgcCA9IG9zLnBhdGguam9pbihwYXRoLGl0ZW0pCiAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwKToKICAgICAgICAgICAgZmlsZXMuZXh0ZW5kKGdldF9maWxlcyhwKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBmaWxlcy5hcHBlbmQocCkKICAgIHJldHVybiBmaWxlcwoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQ=='
print(base64.b64decode(code).decode('utf-8'))
我比较喜欢用requests模块,这是第三方模块,需要自行安装。
安装方法如下:
C:\Users\Administrator>pip install requests
这个的关键是首先分析出post参数的值,我使用firefox的firebug插件的。
在分析完成具体的post参数后及其值后,就可以考虑传值了。
示例代码:
import requestsxfid = '12345678'
str1 = "/wEPDwUKMjEwMTA4MjU3NQ9kFgICAw9kFgICAQ9kFghmD2QWBAIBD2QWAgIBDw8WAh4EVGV4dAUMMTAxNjAwNDU0MjU4ZGQCAw9kFgICAQ8PFgIfAAUJ5pyx5a2U6IqzZGQCAQ9kFgICAQ9kFgICAQ8PFgIfAAV75Y+N5pig5p2R5Lmm6K6w5aSa5bm05p2l6Jma5oql5om/5YyF5Zyf5Zyw5pWw6YeP77yM5L615Y2g5Zyf5Zyw55u06KGl5qy+6Zeu6"
str2 = "/wAV4V4n0wgFZHr3diEzRKmoaXqxD1ZDMcXvMuQ4prcovBwlSwNy5xBFngPatMLuX4Obd5FfbMdfSobes="
url = 'http://*************/SZ_Result.aspx?infoid=' + xfid
data = {
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__LASTFOCUS': '',
'__VIEWSTATE': str1,
'__VIEWSTATEGENERATOR': '6FD494A2',
'__EVENTVALIDATION': str2,
'DropDownList1': '满意',
'DropDownList2': '满意',
'Button1': '提交',
'HiddenField1': xfid,
}
html = requests.get(url)
html_post = requests.post(url, data=data)
print 'DONE!!!!'
这样就完成post传值了。
上面的代码是示例代码,是不能够直接执行的。