python小实战之分配ip

一、背景介绍

由于工作需要,管理着公司的全球机房ip,其他部门同事提取工单需要我这边协助分配一些ping不通的ip来使用。故而有时候会出现大工作量的情况。今日值班正好不巧,碰见同事需要分配16*64个ip,所以身为小菜的我花了1个小时写了的小程序以分配ip,特此记录以便后期回顾优化,也欢迎各位指点优化下。

二、涉及知识点

os模块,使python可以与系统进行交互执行命令。

os.system()    #执行系统命令并返回状态码

##系统帮助文档
>> help(os.system)
Help on built-in function system in module posix:

system(...)
    system(command) -> exit_status
    
    Execute the command (a string) in a subshell.

2.1 os.system()使用摸索

os.system()具体使用如下:

##代码展示
ip_str = "ping -c 10 -i 0.2 -w 3  192.168.137.1 &> /dev/null"
In [38]: t = os.system(ip_str)

In [39]: print t 
0

##t = 0表示ip可以ping通,相反不为0则表示ping不通。
In [34]: if t == 0:
    ...:     print "True"
    ...: else :
    ...:     print t 
    ...:     
True

In [31]: if t == 0:
    ...:     print "True"
    ...: else :
    ...:     print t 
    ...:     
256

三、 ping.py小程序

3.1 ping.py的具体代码

[[email protected] home]# cat ping.py 
#/usr/local/python
#coding:utf-8
##定义ping的函数,参数有前三段ip段,第四段ip的起始,以及需要的ip个数
 

import os ##调用os.system()执行ping命令
def batchPing(head=‘192.168.137‘,start=0,end=12,num = 10):
	tmp = [] 
	#count = 0
	for i in range(start,end+1):
		#count += 1
		#ip_str = ‘ping -c 10‘ +head + ‘.‘ + str(i) 
		ip_str = "%s %s.%s %s" %(‘ping -c 10 -i 0.2 -w 3‘,head,str(i),‘&> /home/ipresult.txt‘) 
		#print "di %s ci : %s" %(count,ip_str)
		##执行ping命令
		res = os.system(ip_str)
		if res  != 0:
			tmp.append(ip_str)
	return tmp[:num]

##将上述整理的ip写入到文件中去
def operateFile(tmp=[]):
	with open(‘/home/useableIp.txt‘,‘w‘) as files:
		for i in tmp:
			#i = i.strip(‘&> /home/ipresult.txt‘)
			i = i.split(‘ ‘)[7]
			files.write(‘%s\n‘ %i)
	return "Done"

if __name__ == "__main__":
	linshi =  batchPing(head=‘112.90.148‘,start=237,end=254,num = 64)
	print operateFile(linshi)

3.2 分析代码:

1.拼接字符串的过于冗长ip_str = "%s %s.%s %s" %(‘ping -c 10 -i 0.2 -w 3‘,head,str(i),‘&> /home/ipresult.txt‘)。可以写成‘ ‘.join(列表)。列表名 = [‘ping -c 10 -i 0.2 -w 3‘,head,str(i),‘&> /home/ipresult.txt‘]。这样应该会美观很多。

2.定义batchPing(head=‘192.168.137‘,start=0,end=12,num = 10)函数,是由于ip地址前三段的ip基本不变,仅最后一段更改,所有拆分成head和最后一位ip两段,遍历最后一个ip的开头start和结束end,在提取出自己想要的ip格式num.处理好后作为函数的返回值return回去。

3.将return返回值写入文件/home/useableIp.txt中,以便记录。

4.个人感觉参数的赋值(linshi =  batchPing(head=‘112.90.148‘,start=237,end=254,num = 64))也略有不雅,可以试试列表或字典的方式即*或者**。当然小程序的任务当然是完成工作,目前工作已经完成了,仅此记录下。便于他日回溯今日思路并优化这段小程序。

5.其实程序bug多多,比如在ping ip环节处,本人是采取ping完后再获取自己想要的数目;若是能够一遍ping一遍累加等足够自己想要的数目就终止的话,这样程序的执行时间在某种程度上会有很大的缩减的

总结:

学习要有定位,明确目标地去学习。学是为了更好的使用,提高自己的工作效率。for growing ---leaves

时间: 2024-10-20 11:20:39

python小实战之分配ip的相关文章

python实战系列之ip地址排序问题(02)

1. 背景说明 从openstack的nova list中获取了虚拟机的ip地址,但这些ip都没有排序和分组,为了进一步增强可读性,对ip地址执行排序操作,在shell下,可以通过sort命令,执行排序操作,具体操作如下: [[email protected] ~]# cat ip.txt | sort -t "." -k1,1n -k2,2n -k3,3n -k4,4n 10.1.104.75 10.1.104.87 10.1.104.149 10.1.104.151 10.1.10

Python爬虫实战---抓取图书馆借阅信息

原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约,影响日后借书,而自己又懒得总是登录到学校图书馆借阅系统查看,于是就打算写一个爬虫来抓取自己的借阅信息,把每本书的应还日期给爬下来,并写入txt文件,这样每次忘了就可以打开该txt文件查看,每次借阅信息改变了,只要再重新运行一遍该程序,原txt文件就会被新文件覆盖,里面的内容得到更新. 用到的技术: Python版本是 2.7 ,同时用到了ur

快速学会Python(实战)

一:学习感悟 (0)学习语言思想和观念的转变是关键 -- 感触分享 乐于善于接受新鲜事物,对新知识充满渴求的欲望: 多交朋友,你可能会做到一门技术一门语言的大牛,你不可能门门精通,互相学习: 参见技术交流群 和 技术blog和社区,之后自己再钻研官方的API 开启一门新技术的策略:1)从一个感兴趣的点入手(培养兴趣),运行一些小示例:2)1-2天简单的过一下基本的语言(可以不变代码):3)1-2天开始把教程里面的一些小程序,自己手动敲一遍:4)2-3天把此语言的数据类型以及包装类型的(类似STL

Python: ping网段内所有ip并返回结果

今天用Python写了一段小代码,实现的功能是ping某一个网段的所有ip,然后将ping的结果提取出来,输出可以ping通的ip以及往返时间. 初学Python,写得简陋,各位大侠多多指教. 正则表达式请根据自己的系统进行调整,我这个是中文win7下的结果 Python3.3下测试没问题 ping测试的过程中内存占用较大,不知道可以怎么改进 __author__ = 'wucl' import subprocess, re, _thread, queue, time, threading pr

python机器学习实战(三)

python机器学习实战(三) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7277205.html  前言 这篇博客是关于机器学习中基于概率论的分类方法--朴素贝叶斯,内容包括朴素贝叶斯分类器,垃圾邮件的分类,解析RSS源数据以及用朴素贝叶斯来分析不同地区的态度. 操作系统:ubuntu14.04 运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习实战和源码,机器学习(周志华) not

python爬虫实战——5分钟做个图片自动下载器

python爬虫实战--图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要,不要告诉我你老师没教你) 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?) 编写正则表达式或者XPath表达式(就是前面说的那个神器) 正式编写python爬虫代码 效果 运行: 恩,让我输入关键词,让我想想,输入什么好呢?好像有点暴露爱好了. 回车 好像开始下载了!好赞!,我看

【图文详解】python爬虫实战——5分钟做个图片自动下载器

python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show me the code! 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 1. 分析需求(对,需求分析非常重要,不要告诉我你老师没教你) 2. 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?) 3. 编写正则表达式或

python机器学习实战(四)

python机器学习实战(四) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7364317.html 前言 这篇notebook是关于机器学习中logistic回归,内容包括基于logistic回归和sigmoid分类,基于最优化方法的最佳系数确定,从疝气病症预测病马的死亡率.操作系统:ubuntu14.04  运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习实战和源码   noteb

《Python开发实战》

<Python开发实战> 基本信息 作者: (日)BePROUD股份有限公司 译者: 盛荣 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115320896 上架时间:2014-5-6 出版日期:2014 年5月 开本:16开 页码:1 版次:1-1 所属分类:计算机 > 软件与程序设计 > Python 更多关于>>><Python开发实战> 编辑推荐 真实项目中的经验总结 行业精英们的智慧结晶 团队开发环境的搭建与管理 /