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 client使用http post 到server端的代码
Feb 10 Python
python求crc32值的方法
Oct 05 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Python3中的json模块使用详解
May 05 Python
django主动抛出403异常的方法详解
Jan 04 Python
如何基于python实现归一化处理
Jan 20 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 Python
python如何处理程序无法打开
Jun 16 Python
python有几个版本
Jun 17 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
七个非常实用的Python工具包总结
Jun 15 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实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
JS动画定时器知识总结
2018/03/23 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
vue3.0 搭建项目总结(详细步骤)
2019/05/20 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python 图片验证码代码分享
2012/07/04 Python
python paramiko实现ssh远程访问的方法
2013/12/03 Python
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python输出带颜色的字符串实例
2017/10/10 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
css sprite简单实例
2016/05/23 HTML / CSS
Shein英国:女性时尚网上商店
2019/04/10 全球购物
安全教育感言
2014/03/04 职场文书
年会搞笑主持词
2014/03/27 职场文书
治安消防安全责任书
2014/07/23 职场文书
社保委托书怎么写
2014/08/02 职场文书
质量承诺书格式范文
2015/04/28 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers