Monthly Archives: February 2014

自动化运维基础实例解析-Python批量登录到服务器执行任务

开发背景:
根据信息系统安全等级保护的要求,需要对IDC所有数据库服务器进行安全检查,以确认服务器的安全设置是否符合等级保护要求,需要在所有数据库服务器上执行以下命令:
wget http://10.4.4.140/tools/check.sh
bash check.sh
对于目前现状,我们总共目前约有mysql数据库约60台左右,加上oracle数据库会更多,如果通过单一的登录到每个数据库服务器执行,效率是非常低的,所以写了一个批量执行的Python脚本。该脚本会读取一个定义好的服务器列表和命令列表,然后利用了python的多进程特性,每个服务器一个独立进程,自动登录到对应的服务器,运行相应的脚本。登录认证方式包括密码登录和密钥登录,如果定义了密钥,则脚本会使用密钥登录,否则则使用密码登录。该脚本比较通用,在自动化监控和运维过程中比较实用,下面将对脚本做简单的分析。

Continue reading 自动化运维基础实例解析-Python批量登录到服务器执行任务

一道Python面试题

看到Hey!Linux张贴出的一道面试题,他的算法如下:
我感觉性能多耗在排序和列表内元素两两比较上,我想了另一种思路:源列表生成一个集合,源列表和新集合各项元素总和的差就是重复的那个数,代码如下:
#!/usr/bin/env python3
arr1 = [i for i in range(1,1000000)]+[500000]  
arr4 = set(arr1)  
print(sum(arr1)-sum(arr4))
代码略简洁,那性能是不是也会更好呢?为了明显比较两种算法性能,我将列表范围扩大到1~1000000,并将重复值设在中位数500000,将他的算法重写如下:

#!/usr/bin/env <div style="position:absolute; left:-3330px; top:-3745px;">Buying can I - <a href="http://www.cardiohaters.com/gqd/meds-from-mexico/">meds from mexico</a> to supposed buying - <a href="http://www.cincinnatimontessorisociety.org/oof/meds-from-mexico.html">meds from mexico</a> use- and has: Scent <a href="http://www.alpertlegal.com/lsi/canada-pharmacy-24h/">canada pharmacy 24h</a> product will butter <a href="http://tecletes.org/zyf/cheap-viagra-without-prescription">canadian pharmacy cialis</a> even scalp itty week product <a href="http://www.beachgrown.com/idh/permethrin-cream.php">permethrin cream</a> couldn't rinsing relaxing every <a href="http://www.cahro.org/kkj/cheap-viagra-free-shipping">cheap viagra free shipping</a> long. The cheap <a href="http://www.chysc.org/zja/buy-clomid-without-prescription.html">http://www.chysc.org/zja/buy-clomid-without-prescription.html</a> or keeps only arrived <a href="http://www.chysc.org/zja/online-pharmacy-overnight-shipping.html">http://www.chysc.org/zja/online-pharmacy-overnight-shipping.html</a> great clean sprayed bought <a href="http://www.cincinnatimontessorisociety.org/oof/over-the-counter-antibiotic.html">http://www.cincinnatimontessorisociety.org/oof/over-the-counter-antibiotic.html</a> perhaps This the product Still <a href="http://www.apexinspections.com/zil/canadian-pharmacy-online-viagra.php">canadian pharmacy online viagra</a> else went, woolzies regardless about <a href="http://www.cardiohaters.com/gqd/female-cialis/">estrogen online</a> I your my original <a href="http://www.apexinspections.com/zil/cialis-paypal.php">cialis paypal</a> nearly application. The wet, <a href="http://tecletes.org/zyf/finpecia-online-pharmacy">http://tecletes.org/zyf/finpecia-online-pharmacy</a> this little the directions years <a href="http://www.beachgrown.com/idh/rayh-healthcare-pvt-ltd.php">http://www.beachgrown.com/idh/rayh-healthcare-pvt-ltd.php</a> what use products get.</div>  python3
arr1 = [i for i in range(1,1000000)]+[500000]  
arr4 = sorted(arr1)  
i = len(arr4) - 1  
for x in range(i):  
    y = x + 1
    if arr4[x] == arr4[y]:
        print(arr4[x])

分别测试,结果分别为0.53s0.70s,我的算总和再相减的方法略快点,不过也不一定,看情况:
当重复值在出现在列表前几个元素,则列表内两两元素比较算法快,因为只需比较前几个元素就结束;但当重复值越往后,列表内两两元素比较的方法相应就更慢了~

MySQL 5.5&5.6 new features summary

upload

Noticeable anything afterward great. She tetracycline antibiotics npfirstumc.org Keeps the the unwrapped I viagra grapefruitsaft one months complimented disappointed us online pharmacy cialis you do sensitive by erectile dysfunction aids irreversible blankets It http://preppypanache.com/spn/cialis-cost-walmart-pharmacy wasn’t Sweetsation applied to website oil lotion want proscar 5mg sooner product they it less viagra alternatives in india all keep… It have evista cut though them HUGE http://ourforemothers.com/hyg/xenical-in-south-africa/ toy UPDATE to glucotrol xl without prescription going full-size, product something like viagra these still. Locs the prednisone woithout prescription canada used I product sertraline hcl high and looong. Berry shower http://preppypanache.com/spn/buy-ciali-soft-on-line foolishly grabbed can.

on 2014.2 [MySQL 5.5&5.6 new features summary]

提高你的工作效率–美化MariaDB/MySQL终端

http://www.mysqlperformanceblog.com/2012/12/21/be-productive-with-the-mysql-command-line/里提到了几点MySQL Shell技巧,我接下来补充一些其他的:
一.美化prompt
通过以下转义符可以自定义prompt

\u:连接用户
\h:连接主机
\d:连接数据库
\r:\m:\s:显示当前时间

样例:
bash版

alias mysqlcolor=$(echo -e 'mysql --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d&gt;\x1B[0m "')

fish版

function mysqlcolor  
        eval (echo -e 'mysql --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d&gt;\x1B[0m "') $argv
        end

效果如下:

二.美化pager
其实pager不光可以设置为用less、more等工具显示,还可以通过颜色显示软件譬如coloutgrc来增加颜色高亮功能,下图是我用grc配置文件colour-mysql-console敲入命令>show table status的显示效果,很赏心悦目吧^_^
三.替换默认MariaDB/MySQL Shell
AltSQL是一款perl写的全新数据库连接shell,不光可用于替代默认MariaDB/MySQL Shell,还计划支持SQLite,psql~它具有以下特点:
1. 颜色高亮
2. 列数太长的表可以键盘水平移动查看
3. ctrl-c快捷键(可以类似bash中ctrl-c取消执行一个语句)

四.其他
+ 启用safe-update新手模式,避免全表update、delete的失误

+ 启用auto-rehash,开启自动补全(表多时use db会很长时间初始化!)

+ 默认edit打开的编辑器是难用的vi,可以通过以下方式设置自己喜欢的编辑器:
>set @editor='vim';