python學(xué)習(xí)之編寫(xiě)查詢ip程序
公司服務(wù)器上的ip最少的也有100多個(gè),有時(shí)候查到一個(gè)站的Ip, 不想通過(guò)OA去查,自己就用自己最近學(xué)的python知識(shí),結(jié)合數(shù)據(jù)庫(kù),編寫(xiě)了一python小程序。實(shí)現(xiàn)只要輸入主ip就能查到這臺(tái)服務(wù)器的子ip,輸入子ip能查到此ip所在的主服務(wù)器。
功能示例:
使用 -m 參數(shù) 指定主服務(wù)器地址,即查詢此服務(wù)器上所有的子ip
使用 -s 參數(shù) 指定子ip, 即可查詢此子ip所在的服務(wù)器主ip地址
使用 -h 或 -help 參數(shù)可打印help
使用 -v 或-version參數(shù)可打印版本
如果程序參數(shù)不合法,則提示幫助
好了,功能就這么多,我們來(lái)看看怎么用python 實(shí)現(xiàn)的。
一,我們先看一下數(shù)據(jù)庫(kù),看一下他的結(jié)構(gòu),其實(shí)數(shù)據(jù)庫(kù)里很簡(jiǎn)單,只記錄了ip的對(duì)應(yīng)關(guān)系。
如下圖
二,我們來(lái)看一下程序是怎么寫(xiě)的, 先貼一下程序。
#! /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"
三.對(duì)程序進(jìn)行解釋
#! /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" #嘗試?yán)美ㄌ?hào)里的信息去連接數(shù)據(jù)庫(kù),如果連接數(shù)據(jù)庫(kù)不成功剛打印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() # 定義一個(gè)masterip函數(shù), 括號(hào)里的ip 為參數(shù),在下面的sql語(yǔ)句里用到。sql后面是查詢語(yǔ)句。 利用上面括號(hào)里定義的ip 去查詢 子ip。再利用for 循環(huán)逐個(gè)打印出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() # 定義一個(gè)secip函數(shù), 括號(hào)里的ip 為參數(shù),在下面的sql語(yǔ)句里用到。sql后面是查詢語(yǔ)句。 利用上面括號(hào)里定義的ip 去查詢 主ip。再利用for 循環(huán)逐個(gè)打印出ip! if len(sys.argv)<2: print "You have an error in you syntax,please you -help,-h for help" sys.exit() # 判斷命令行參數(shù),如果命令行參數(shù)小于2,(命令本身就屬于一個(gè)參數(shù))就打印提示信息,并退出,此行的意思就是半數(shù)命令后面有沒(méi)有跟參數(shù),如果沒(méi)有跟參數(shù),就直接退出。 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() #判斷命令行第一個(gè)數(shù)據(jù)是不是 -h (注,命令行參數(shù)是從0開(kāi)始,0 也就是命令本身),如果是 -h的話,就打印幫助信息,并退出。 elif "-v"==sys.argv[1] or "-version"==sys.argv[1]: print "Version is 0.1" sys.exit() #判斷命令行第一個(gè)數(shù)據(jù)是不是 -v (注,命令行參數(shù)是從0開(kāi)始,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) #判斷命令行第一個(gè)數(shù)據(jù)是不是 -s (注,命令行參數(shù)是從0開(kāi)始,0 也就是命令本身),如果是 -s的話,判斷命令行參數(shù)是否小于3,也就是 -s 后面有沒(méi)有跟參數(shù)(ip), 如果沒(méi)跟的話,就打印提示信息,并退出 。如果跟了的話,就把-s 后面的參數(shù)給 ip這個(gè)變量,并執(zhí)行 secip() 這個(gè)函數(shù)。 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) #判斷命令行第一個(gè)數(shù)據(jù)是不是 -m (注,命令行參數(shù)是從0開(kāi)始,0 也就是命令本身),如果是 -m的話,判斷命令行參數(shù)是否小于3,也就是 -m 后面有沒(méi)有跟參數(shù)(ip), 如果沒(méi)跟的話,就打印提示信息,并退出 。如果跟了的話,就把-m 后面的參數(shù)給 ip這個(gè)變量,并執(zhí)行 masterip() 這個(gè)函數(shù)。 else: print "You have an error in you syntax,please you -help,-h for help"
如果跟上面所有的參數(shù)都不符合,就直接打印幫助信息。
Ok!程序完了。很簡(jiǎn)單,但好像也很實(shí)用。
- python實(shí)現(xiàn)獲取Ip歸屬地等信息
- Python使用淘寶API查詢IP歸屬地功能分享
- 基于python實(shí)現(xiàn)查詢ip地址來(lái)源
- python實(shí)現(xiàn)ip地址查詢經(jīng)緯度定位詳解
- Python查詢IP地址歸屬完整代碼
- 網(wǎng)站滲透常用Python小腳本查詢同ip網(wǎng)站
- python實(shí)現(xiàn)查詢IP地址所在地
- python使用在線API查詢IP對(duì)應(yīng)的地理位置信息實(shí)例
- python實(shí)現(xiàn)ip查詢示例
- python 實(shí)現(xiàn)全球IP歸屬地查詢工具
相關(guān)文章
如何通過(guò)pycharm實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢等操作(非多步操作)
這篇文章主要介紹了如何通過(guò)pycharm實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢等操作(非多步操作),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Pytorch實(shí)現(xiàn)將label變成one hot編碼的兩種方式
這篇文章主要介紹了Pytorch實(shí)現(xiàn)將label變成one hot編碼的兩種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02關(guān)于Python下載大文件時(shí)哪種方式速度更快
這篇文章主要介紹了關(guān)于Python下載大文件時(shí)哪種方式速度更快,通常,我們都會(huì)用 requests 庫(kù)去下載,這個(gè)庫(kù)用起來(lái)太方便了,需要的朋友可以參考下2023-04-04Python matplotlib實(shí)戰(zhàn)之漏斗圖繪制
漏斗圖,形如“漏斗”,用于展示數(shù)據(jù)的逐漸減少或過(guò)濾過(guò)程,這篇文章主要為大家介紹了如何使用Matplotlib繪制漏斗圖,需要的小伙伴可以參考下2023-08-08selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器
這篇文章主要介紹了selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12python實(shí)例方法的使用注意及代碼實(shí)例
在本篇文章里小編給大家總結(jié)的是關(guān)于python實(shí)例方法的使用注意及代碼實(shí)例內(nèi)容,對(duì)此有興趣的朋友們可以參考下。2022-11-11PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片
這篇文章主要介紹了PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python猴子補(bǔ)丁知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是關(guān)于Python猴子補(bǔ)丁知識(shí)點(diǎn)總結(jié),需要的朋友們學(xué)習(xí)下。2020-01-01