免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yestreenstars

[其他] 学习与分享——Python自动化运维 [复制链接]

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
发表于 2014-11-24 15:10 |显示全部楼层
太厉害了。。。

求职 : Linux运维
论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:15:0815-16赛季CBA联赛之山东
日期:2016-10-31 10:40:10综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00IT运维版块每日发帖之星
日期:2016-02-08 06:20:00数据库技术版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-10 06:20:00黄金圣斗士
日期:2015-11-24 10:45:10IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-08-13 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:012015年亚洲杯之巴勒斯坦
日期:2015-05-05 10:19:03
发表于 2014-11-24 15:13 |显示全部楼层
上次在网上找了个PYTHON的路由备份脚本。改了改。在LINUX系统上开TFTP服务。然后用它来备份我们的所有路由器参数。

求职 : Linux运维
论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:15:0815-16赛季CBA联赛之山东
日期:2016-10-31 10:40:10综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00IT运维版块每日发帖之星
日期:2016-02-08 06:20:00数据库技术版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-10 06:20:00黄金圣斗士
日期:2015-11-24 10:45:10IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-08-13 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:012015年亚洲杯之巴勒斯坦
日期:2015-05-05 10:19:03
发表于 2014-11-24 15:17 |显示全部楼层
最早接触PYTHON语言大概是在使用LINUX系统后的3年。当时觉得LINUX里边有很多PYTHON脚本。然后知道了还有个PYTHON的语言。于是买本关于PYTHON的书。然后知道了所谓的鸭子类型。最重要的是知道了它是一门真正的自由开源软件。这么多年这门语言的生命力依旧。我觉得真的自由开源理念才让他走这么远!!!

求职 : Linux运维
论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:15:0815-16赛季CBA联赛之山东
日期:2016-10-31 10:40:10综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00IT运维版块每日发帖之星
日期:2016-02-08 06:20:00数据库技术版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-15 06:20:00IT运维版块每日发帖之星
日期:2016-01-10 06:20:00黄金圣斗士
日期:2015-11-24 10:45:10IT运维版块每日发帖之星
日期:2015-09-01 06:20:00IT运维版块每日发帖之星
日期:2015-08-13 06:20:00IT运维版块每日发帖之星
日期:2015-07-30 09:40:012015年亚洲杯之巴勒斯坦
日期:2015-05-05 10:19:03
发表于 2014-11-24 18:13 |显示全部楼层
很想要这个书来好好学习下啦。呵呵

论坛徽章:
0
发表于 2014-11-24 21:28 |显示全部楼层
thanks for your sharing.........................

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2014-11-24 21:38 |显示全部楼层
回复 27# yestreenstars

  

论坛徽章:
7
寅虎
日期:2014-08-15 12:54:11狮子座
日期:2014-10-28 23:42:142015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:00IT运维版块每日发帖之星
日期:2015-08-04 06:20:00IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-10-10 06:20:00
发表于 2014-11-24 23:12 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2014-11-24 23:21 |显示全部楼层
1.你是如何学习Python的?看书?看视频?还是?
    刚开始看书《python核心编程》,基本语法看完后,尝试将之前的shell脚本用python来实现,然后特别学习常用的模块,MysqlDB,paramiko,threading,WMI等等,之后基本上一个有个需求基本上都能有个大致的python解决方案了,碰到问题再查资料,学会,积累。
2.你工作中有用到Python吗?主要用来做什么?
    现在工作中python的使用率比重还是比较高的,日志分析,自动化工具,监控脚本等等。
3.你觉得Python跟其他脚本语言比优势在哪?
    跨平台,windows,linux都能用的上,python抽象出来的模块很容易学习,不用关注底层的实现,仅运维工作中,完全够用了。
4.谈谈Python在自动化运维中的应用。
    目前有很多运维工具都是用python写成的,比如saltsack,ansible,已经证明了python在自动化运维中的实用以及灵活,如果要开发自己业务适用的自动化运维平台,python完全可以满足,就个人而言,python是首选。
5.给出一个你自己写的Python脚本(最好有详细注释)。
#!/usr/bin/env python
import sys
import time
import random
import cmd
import paramiko
import threading
import ConfigParser

#加载配置文件
config_file=ConfigParser.SafeConfigParser()
config_file.read('/tmp/sixther/config.ini')

#指定服务器私钥的路径,用初始化paramiko
pkey_path='/home/sixther/.ssh/id_rsa'
s=paramiko.SSHClient()
s.load_system_host_keys()

yuenan_iplist={'CCS':'1.1.1.1'}
malai_iplist={'CCS':'2.2.2.2'}
taiwan_iplist={'CCS':'3.3.3.3'}
xianggang_iplist={'CCS':'4.4.4.4'}
beimei_iplist={'CCS':'5.5.5.5'}
taiguo_iplist={'CCS':'6.6.6.6'}

#定义并发函数
def multi_thread(main_proc,slave_proc):
    multi_thread=[]
        main=threading.Thread(target=main_proc)
    main.setDaemon(True)
    multi_thread.append(main)
    slave=threading.Thread(target=slave_proc)
    multi_thread.append(slave)
    for i in range(2):
        multi_thread[i].start()
    multi_thread[1].join()
    multi_thread[0].join()
    print "\x1b[0;31m%s\x1b[0m" %  ('command compelete~')
#初始化cmd一级目录
class First(cmd.Cmd):
    prompt='[Please choose the area]>>'
    def do_yuenan(self,line):      
        second_loop(yuenan_iplist,'YueNan')
    def do_malai(self,line):
        second_loop(malai_iplist,'MaLai')
    def do_taiwan(self,line):
        second_loop(taiwan_iplist,'TaiWan')
    def do_xianggang(self,line):
        second_loop(xianggang_iplist,'XiangGang')
    def do_beimei(self,line):
        second_loop(beimei_iplist,'BeiMei')
    def do_taiguo(self,line):
        second_loop(taiguo_iplist,'TaiGuo')
    def do_EOF(self):
        return True
    def emptyline(self):
        print

#初始化cmd二级目录
class Second(cmd.Cmd):
    def __init__(self,area):
        cmd.Cmd.__init__(self)
        cmd.Cmd.prompt='['+area+']>>'
    def do_choose_area(self,line):
        First().cmdloop()
    def do_shell(self,line):
        stdin,stdout,stderr=s.exec_command(line)
                print "\n\x1b[0;32m%s\x1b[0m" % (stdout.read())
                print "\n\x1b[0;35m%s\x1b[0m" % (stderr.read())
    def emptyline(self):
        print

def second_loop(iplist,area_name):
            s.connect(hostname=iplist['CCS'],username='dagtlbb',key_filename=pkey_path)
        command=[]
        script=[]
        for i in config_file.sections():
            command.append(config_file.get(i,'command'))
            script.append(config_file.get(i,'script'))
        exec_command_func=[lambda self,line,i=i:exec_script(i) for i in script]
        for i in range(len(command)):   
            setattr(Second,'do_'+command[i],exec_command_func[i])
                Second(area_name).cmdloop()
#定义远程执行命令函数
def exec_script(script_name):
    stdin,stdout,stderr=s.exec_command('/home/dagtlbb/admin/test/'+script_name)
        print "\n\x1b[0;32m%s\x1b[0m" % (stdout.read())
    print "\n\x1b[0;35m%s\x1b[0m" % (stderr.read())

#随机打印小故事函数,用于命令执行太慢的时候解乏用。
def show_story(self):
    story_df=open('/tmp/duanchao/story.txt','r')
    random_num=random.randint(1,4)
    for i in story_df:
        if i.startswith(str(random_num)):
            for j in range(len(i)):
                if j%50 == 0:
                    print "\n"
                       sys.stdout.write(i[j])
                    sys.stdout.flush()
if __name__ == '__main__':
    First().cmdloop()

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-11-25 09:27 |显示全部楼层
回复 40# dc222222222

将shell脚本用python来改写,这种学习方法不错,能否给出一个实例?
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-11-25 09:43 |显示全部楼层
回复 35# niao5929

想要书得好好参与讨论哦~
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP