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 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
Python 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
python回调函数用法实例分析
May 09 Python
解读Python中degrees()方法的使用
May 18 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
python3的pip路径在哪
Jun 23 Python
使用python对excel表格处理的一些小功能
Jan 25 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 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+MySQL的聊天室设计
2006/10/09 PHP
PHP防注入安全代码
2008/04/09 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
php 发送带附件邮件示例
2014/01/23 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
ci检测是ajax还是页面post提交数据的方法
2014/11/10 PHP
xmlHTTP实例
2006/10/24 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
解读ES6中class关键字
2017/11/20 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
python处理按钮消息的实例详解
2017/07/11 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
python 字典的打印实现
2019/09/26 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
美国在线家装零售商:Build.com
2016/09/02 全球购物
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
高山背包:High Sierra
2017/11/23 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
行政监察建议书
2014/05/19 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
优秀护士事迹材料
2014/12/25 职场文书
CentOS MySql8 远程连接实战
2022/04/19 MySQL
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技