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!程序完了。很简单,但好像也很实用。


猜你喜欢
- 此模块允许你输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能。值得注意的是,默认情况下,这些日历将星期一作为一
- 只要为pycharm配置anaconda中的解析器即可。操作步骤:1. 在pycharm菜单栏中,点击File-Settings-Proje
- I. 前言在上一篇文章深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中,我详细地解释了如何利用PyTor
- 前言笔者最近正在学习Pandas数据分析,将自己的学习笔记做成一套系列文章。本节主要记录Pandas中数据的合并(concat和append
- /* * zoomCheck */jQuery(function($){ var dCheck = $(&q
- 今天是 Firefox3的2008下载日 ,这就意味着Firefox3正式发布了。Firefox3有众多的改进和新功能,我最关注的功能之一是
- 导语哈喽!我是木木子,今天又想我了嘛?之前不是出过一期Python美颜相机嘛?不知道你们还记得不?这一期的话话题还是围绕上期关于颜值方面来走
- list count统计个数实现在python数组中统计某个数字出现的次数。。。。。count_num = 3lst = [1,2,3,4,
- 获取文件目录的方法 :import os# '***获取当前目录***'os.getcwd()# '***获取上级目
- 1、变量和类型变量是一种存储数据的载体,也就是一个容器。计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间,变量的值可以被
- 在开发过程中,会遇到在命令行下将DOC文档(或者是其他Office文档)转换为PDF的要求。比如在项目中如果手册是DOC格式的,在项目发布时
- 使用JS对Json数据的处理,项目遇到需要对Json数据进行相关操作,比如增删改操作,本以为会比较难,网上搜索下,发现还是比较简单的,贴一段
- IntelliJ IDEA 2020.1 插件中心一直打不开,鉴于有部分同学反馈设置http proxy不能解决,所以可按以下顺序检查一、设
- 一、python-yml文件读写使用库 :import yaml安装:pip install pyyaml示例:文件config2.ymlg
- 傅里叶变换图像处理一般分为空间域处理和频率域处理。空间域处理是直接对图像内的像素进行处理。空间域处理主要划分为灰度变换和空间滤波两种形式。灰
- 一、制作播放器的思路制作一个多功能音乐播放器的思路确定播放器的需求和功能,例如支持哪些音频格式、播放列表管理、循环播放、暂停、进度条显示等等
- 哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加范围 8 - 10000思路:首先不要去管需要什么什么东西实现,所以我们如果知道如何去完成
- 本文实例为大家分享了JavaScript实现涂鸦笔的具体代码,供大家参考,具体内容如下1、html部分、css部分1.1 实现一个画框<
- python简单游戏-反弹球,供大家参考,具体内容如下tkinter实现,直接贴上代码from tkinter import*import
- 分享一下刚遇到的一个小问题,我有一段类似于这样的python代码:# coding: utf-8class A(object):