python学习之编写查询ip程序


Posted in Python onFebruary 27, 2016

公司服务器上的ip最少的也有100多个,有时候查到一个站的Ip, 不想通过OA去查,自己就用自己最近学的python知识,结合数据库,编写了一python小程序。实现只要输入主ip就能查到这台服务器的子ip,输入子ip能查到此ip所在的主服务器。

功能示例:

python学习之编写查询ip程序

使用 -m 参数 指定主服务器地址,即查询此服务器上所有的子ip

python学习之编写查询ip程序

使用 -s 参数 指定子ip, 即可查询此子ip所在的服务器主ip地址

python学习之编写查询ip程序

使用 -h 或 -help 参数可打印help

python学习之编写查询ip程序

使用 -v 或-version参数可打印版本

python学习之编写查询ip程序

如果程序参数不合法,则提示帮助

好了,功能就这么多,我们来看看怎么用python 实现的。

一,我们先看一下数据库,看一下他的结构,其实数据库里很简单,只记录了ip的对应关系。

如下图

python学习之编写查询ip程序

二,我们来看一下程序是怎么写的, 先贴一下程序。

#! /usr/bin/python
#Filename select.py
import MySQLdb,os,sys
 
try:
  conn = MySQLdb.connect("localhost","root","密码","ips",charset="utf8")
except MySQLdb.OperationalError, message:
  print "link error"
 
def masterip(ip):

  sql="select secip from ip_master where masterip='%s'" %ip
  cursor=conn.cursor()
  n=cursor.execute(sql)
  cds=cursor.fetchall()
  for cd in cds:
    for col in cd:
      print "%s" % (col)

  cursor.close()
  conn.close()
 
def secip(ip):

  sql="select masterip from ip_master where secip='%s'" %ip
  cursor=conn.cursor()
  n=cursor.execute(sql)
  cds=cursor.fetchall()

  for cd in cds:
    for col in cd:
      print "%s" % (col)

  cursor.close()
  conn.close()


 
if len(sys.argv)<2:
  print "You have an error in you syntax,please you -help,-h for help"
  sys.exit()


 
if "-h"==sys.argv[1] or "-help"==sys.argv[1]:
  print '''\
This program select master ips and slave ips.
Options include:
-s slave ip :use slave ip to select msterip
-m masterip :use master ip to select slaveip
-h;-help  :help
-v;-version :prints version '''
  sys.exit()

 
elif "-v"==sys.argv[1] or "-version"==sys.argv[1]:
  print "Version is 0.1"
  sys.exit()

 
elif "-s"==sys.argv[1]:
  if len(sys.argv)<3:
    print "You have an error in you syntax,please you -help,-h for help"
    sys.exit()
  ip=sys.argv[2]

  secip(ip)

 
elif "-m"==sys.argv[1]:
  if len(sys.argv)<3:
    print "You have an error in you syntax,please you -help,-h for help"
    sys.exit()
  ip=sys.argv[2]

  masterip(ip)
 
else:
  print "You have an error in you syntax,please you -help,-h for help"

三.对程序进行解释

#! /usr/bin/python         
import MySQLdb,os,sys   #加载 mysqldb os sys
try:
  conn = MySQLdb.connect("localhost","root","密码","ips",charset="utf8")
except MySQLdb.OperationalError, message:
  print "link error"
 
#尝试利用括号里的信息去连接数据库,如果连接数据库不成功刚打印link error! 

 
def masterip(ip):
  sql="select secip from ip_master where masterip='%s'" %ip
  cursor=conn.cursor()
  n=cursor.execute(sql)
  cds=cursor.fetchall()
  for cd in cds:
    for col in cd:
      print "%s" % (col)
  cursor.close()
  conn.close()
 
# 定义一个masterip函数, 括号里的ip 为参数,在下面的sql语句里用到。sql后面是查询语句。 利用上面括号里定义的ip 去查询 子ip。再利用for 循环逐个打印出ip!

 
def secip(ip):
  sql="select masterip from ip_master where secip='%s'" %ip
  cursor=conn.cursor()
  n=cursor.execute(sql)
  cds=cursor.fetchall()
  for cd in cds:
    for col in cd:
      print "%s" % (col)
  cursor.close()
  conn.close()
 
# 定义一个secip函数, 括号里的ip 为参数,在下面的sql语句里用到。sql后面是查询语句。 利用上面括号里定义的ip 去查询 主ip。再利用for 循环逐个打印出ip!

 
if len(sys.argv)<2:
  print "You have an error in you syntax,please you -help,-h for help"
  sys.exit()
 
# 判断命令行参数,如果命令行参数小于2,(命令本身就属于一个参数)就打印提示信息,并退出,此行的意思就是半数命令后面有没有跟参数,如果没有跟参数,就直接退出。
 
if "-h"==sys.argv[1] or "-help"==sys.argv[1]:
  print '''\
This program select master ips and slave ips.
Options include:
-s slave ip :use slave ip to select msterip
-m masterip :use master ip to select slaveip
-h;-help  :help
-v;-version :prints version '''
  sys.exit()
 
#判断命令行第一个数据是不是 -h (注,命令行参数是从0开始,0 也就是命令本身),如果是 -h的话,就打印帮助信息,并退出。
 
elif "-v"==sys.argv[1] or "-version"==sys.argv[1]:
  print "Version is 0.1"
  sys.exit()
 
#判断命令行第一个数据是不是 -v (注,命令行参数是从0开始,0 也就是命令本身),如果是 -v的话,就打印版本信息,并退出。

 
elif "-s"==sys.argv[1]:
  if len(sys.argv)<3:
    print "You have an error in you syntax,please you -help,-h for help"
    sys.exit()
  ip=sys.argv[2]
  secip(ip)
 
#判断命令行第一个数据是不是 -s (注,命令行参数是从0开始,0 也就是命令本身),如果是 -s的话,判断命令行参数是否小于3,也就是 -s 后面有没有跟参数(ip), 如果没跟的话,就打印提示信息,并退出 。如果跟了的话,就把-s 后面的参数给 ip这个变量,并执行 secip() 这个函数。

 
elif "-m"==sys.argv[1]:
  if len(sys.argv)<3:
    print "You have an error in you syntax,please you -help,-h for help"
    sys.exit()
  ip=sys.argv[2]
  masterip(ip)
 
#判断命令行第一个数据是不是 -m (注,命令行参数是从0开始,0 也就是命令本身),如果是 -m的话,判断命令行参数是否小于3,也就是 -m 后面有没有跟参数(ip), 如果没跟的话,就打印提示信息,并退出 。如果跟了的话,就把-m 后面的参数给 ip这个变量,并执行 masterip() 这个函数。

 
else:
  print "You have an error in you syntax,please you -help,-h for help"

如果跟上面所有的参数都不符合,就直接打印帮助信息。

Ok!程序完了。很简单,但好像也很实用。

Python 相关文章推荐
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
详解用python实现简单的遗传算法
Jan 02 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 Python
python之super的使用小结
Aug 13 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
Python OpenGL基本配置方式
May 20 Python
用python写的一个wordpress的采集程序
Feb 27 #Python
python结合shell查询google关键词排名的实现代码
Feb 27 #Python
python的else子句使用指南
Feb 27 #Python
Python实现简单多线程任务队列
Feb 27 #Python
如何在Python中编写并发程序
Feb 27 #Python
Python 多线程抓取图片效率对比
Feb 27 #Python
Python 的描述符 descriptor详解
Feb 27 #Python
You might like
PHP SPL使用方法和他的威力
2013/11/12 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
Django中几种重定向方法
2015/04/28 Python
Python自动登录126邮箱的方法
2015/07/10 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
简单了解python变量的作用域
2019/07/30 Python
python实现代码统计器
2019/09/19 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
销售人员自我评价怎么写
2013/09/19 职场文书
老师给学生的表扬信
2014/01/17 职场文书
学生期末评语大全
2014/04/30 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
营业员岗位职责
2015/02/11 职场文书
校本培训个人总结
2015/02/28 职场文书
国庆阅兵观后感
2015/06/15 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android