忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: yestreenstars

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

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01金牛座
日期: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-24 14:50 |显示全部楼层
回复 30# shenyue_sam

python用的也是perl正则,但用起来没有perl那么灵活,还有一点就是用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双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26巳蛇
日期:2013-11-08 06:25:12
发表于 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-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01金牛座
日期: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来改写,这种学习方法不错,能否给出一个实例?
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票7.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP