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类继承与子类实例初始化用法分析
Apr 17 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
pycharm 配置远程解释器的方法
Oct 28 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
python文本处理的方案(结巴分词并去除符号)
May 26 Python
Python实现滑雪小游戏
Sep 25 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的性能
2013/10/30 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
2018/01/09 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
Python解惑之True和False详解
2017/04/24 Python
python中解析json格式文件的方法示例
2017/05/03 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
英语演讲稿范文
2014/01/03 职场文书
经销商会议欢迎词
2014/01/11 职场文书
国际会议邀请函范文
2014/01/16 职场文书
上班打牌检讨书
2014/02/07 职场文书
小学生春游活动方案
2014/08/20 职场文书
关于长城的导游词
2015/01/30 职场文书
关于倡议书的范文
2015/04/29 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
高温慰问简报
2015/07/21 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
使用Python开发冰球小游戏
2022/04/30 Python