python学习之编写查询ip程序
作者:运维人生 发布时间:2023-11-09 18:52:29
标签:查询ip程序
公司服务器上的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!程序完了。很简单,但好像也很实用。
0
投稿
猜你喜欢
- 在US BlackHat 2018大会上,安全人员证明,攻击者不仅可以利用PHAR包发动RCE攻击,而且,通过调整其二进制内容,他们还可以将
- 要介绍Python的三元表达式,可以先看看其他编程语言比如C,JAVA中应用:public class java { public stat
- 本文实例讲述了PHP获取二叉树镜像的方法。分享给大家供大家参考,具体如下:问题操作给定的二叉树,将其变换为源二叉树的镜像。解决思路翻转二叉树
- TensorFlow提供了一种统一的格式来存储数据,就是TFRecord,它可以统一不同的原始数据格式,并且更加有效地管理不同的属性。TFR
- 原来字母还可以组合成各种动物图案,真是佩服设计师的奇思妙想,很可爱,超级有趣的组合!Bembo's Zoo 猴子:羊是牛吗,勤劳的水
- 一般来说,我们会将自己写的Python模块与python自带的模块分开存放以达到便于维护的目的。那么如何在Python中添加自定义的模块呢?
- 这个框架主要还是思想,之后,,,还是创建项目好了,1.新建一个项目新建一个maven,并且选择webapp类型。2.点击next选项这里面的
- 使用PyCharm工具写好的Python程序脚本,怎么将.py文件编译为可执行的.exe文件前提是已经安装了Python环境。第一步:在Py
- 字典排序在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。
- WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。官方对
- 大家知道,在js里encodeURIComponent 方法是一个比较常用的编码方法,但因工作需要,在asp里需用到此方法,查了好多资料,没
- 本文实例讲述了Python简单计算文件MD5值的方法。分享给大家供大家参考,具体如下:一 代码import sysimport hashli
- 隐藏你的.php文件 隐藏你的.php文件 今天做PHP在线手册镜像的时候看到了这个方法,哈哈,以前都没有注意到,所以说,手册是
- 相信很多人在使用Ajax与后台php页面进行交互的时候都碰到过中文乱码的问题。JSON作为一种轻量级的数据交换格式,备受亲睐,但是用PHP作
- 一、问答平台这个「生活常识解答」机器人采用的是:阿里达摩院发布的语言模型PLUG(最近刚发布的,目前是测试阶段),地址链接如下:https:
- 代码如下import numpy as npfrom matplotlib import pyplot as plt# 用numpy生成数据
- 我刚进入5gsns的时候,我真不知道怎么玩,我是通过白鸦的博客过去的,之前也没有怎么去玩过这类的网站。对于sns网站还算是陌生,不过还好网站
- 按时间删除文件# importing the required modulesimport osimport shutilimport ti
- 数字序号① ①② ②③ &
- 这篇论坛文章(赛迪网技术社区)主要介绍了一种简单的MySQL数据库安装方法,详细内容请大家参考下文:虽然安装MySQL数据库的文章很多,但是