python学习之编写查询ip程序
admin
2023-07-31 02:31:58
0

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

功能示例:

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

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

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

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

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

好了,功能就这么多,我们来看看怎么用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!程序完了。很简单,但好像也很实用。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...