python学习之编写查询ip程序
作者:运维人生 时间:2023-11-09 18:52:29
公司服务器上的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!程序完了。很简单,但好像也很实用。
标签:查询ip程序
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
OpenCV半小时掌握基本操作之对象测量
2023-06-08 12:09:18
![](https://img.aspxhome.com/file/2023/1/76011_0s.gif)
python 实现图像快速替换某种颜色
2021-07-20 03:16:13
![](https://img.aspxhome.com/file/2023/3/113003_0s.jpg)
怎么解决pycharm license Acti的方法
2022-12-27 10:36:39
![](https://img.aspxhome.com/file/2023/8/123578_0s.jpg)
Linux下修改MySQL编码的方法
2024-01-27 02:36:15
![](https://img.aspxhome.com/file/2023/2/112892_0s.jpg)
Python获取昨天、今天、明天开始、结束时间戳的方法
2022-08-23 18:23:40
详解Python学习之安装pandas
2021-04-30 19:35:33
![](https://img.aspxhome.com/file/2023/8/86378_0s.png)
在Pandas DataFrame中插入一列的方法实例
2021-08-17 19:39:18
详解Python读取配置文件模块ConfigParser
2022-02-25 09:05:23
进制转换算法原理(二进制 八进制 十进制 十六进制)
2022-01-09 03:18:23
Go语言中strings和strconv包示例代码详解
2024-04-23 09:41:58
CentOS中安装python3.8.2的详细教程
2022-05-08 11:55:52
![](https://img.aspxhome.com/file/2023/8/87728_0s.png)
如何将自己的python代码发布在pip install给别人使用你知道吗
2022-07-19 20:36:21
![](https://img.aspxhome.com/file/2023/5/75195_0s.png)
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2024-06-07 15:50:03
![](https://img.aspxhome.com/file/2023/9/122469_0s.jpg)
Python中str.format()详解
2023-01-12 13:26:47
Python编码时应该注意的几个情况
2021-03-15 20:59:54
Javascript发送AJAX请求实例代码
2024-04-29 13:13:34
如何解决cmd运行python提示不是内部命令
2022-02-05 05:05:38
![](https://img.aspxhome.com/file/2023/8/110408_0s.png)
基于PyQT5制作一个桌面摸鱼工具
2021-02-06 17:57:21
layui 数据表格 点击分页按钮 监听事件的实例
2024-04-19 10:45:12
![](https://img.aspxhome.com/file/2023/1/135781_0s.jpg)
解决python Markdown模块乱码的问题
2021-09-15 07:31:36
![](https://img.aspxhome.com/file/2023/0/131380_0s.jpg)