最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python學(xué)習(xí)之編寫查詢ip程序

 更新時(shí)間:2016年02月27日 22:10:16   作者:運(yùn)維人生  
這篇文章主要介紹了python學(xué)習(xí)之編寫查詢ip程序 ,需要的朋友可以參考下

公司服務(wù)器上的ip最少的也有100多個(gè),有時(shí)候查到一個(gè)站的Ip, 不想通過OA去查,自己就用自己最近學(xué)的python知識(shí),結(jié)合數(shù)據(jù)庫,編寫了一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ù)不合法,則提示幫助

好了,功能就這么多,我們來看看怎么用python 實(shí)現(xiàn)的。

一,我們先看一下數(shù)據(jù)庫,看一下他的結(jié)構(gòu),其實(shí)數(shù)據(jù)庫里很簡(jiǎn)單,只記錄了ip的對(duì)應(yīng)關(guān)系。

如下圖

二,我們來看一下程序是怎么寫的, 先貼一下程序。

#! /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ù)庫,如果連接數(shù)據(jù)庫不成功剛打印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語句里用到。sql后面是查詢語句。 利用上面括號(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語句里用到。sql后面是查詢語句。 利用上面括號(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ù)命令后面有沒有跟參數(shù),如果沒有跟參數(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開始,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開始,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開始,0 也就是命令本身),如果是 -s的話,判斷命令行參數(shù)是否小于3,也就是 -s 后面有沒有跟參數(shù)(ip), 如果沒跟的話,就打印提示信息,并退出 。如果跟了的話,就把-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開始,0 也就是命令本身),如果是 -m的話,判斷命令行參數(shù)是否小于3,也就是 -m 后面有沒有跟參數(shù)(ip), 如果沒跟的話,就打印提示信息,并退出 。如果跟了的話,就把-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í)用。

相關(guān)文章

  • Python利用pptx操作PPT實(shí)現(xiàn)幻燈片的刪除與替換

    Python利用pptx操作PPT實(shí)現(xiàn)幻燈片的刪除與替換

    這篇文章主要為大家詳細(xì)介紹了python如何使用pptx庫實(shí)現(xiàn)操作PPTx幻燈片文件刪除并替換圖片,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下
    2023-02-02
  • Python批量改變圖片名字的示例代碼

    Python批量改變圖片名字的示例代碼

    本文主要介紹了Python批量改變圖片名字的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 利用 Python 實(shí)現(xiàn)多任務(wù)進(jìn)程

    利用 Python 實(shí)現(xiàn)多任務(wù)進(jìn)程

    這篇文章主要介紹如何利用 Python 實(shí)現(xiàn)多任務(wù)進(jìn)程,正在執(zhí)行的程序,由程序、數(shù)據(jù)和進(jìn)程控制塊組成,是正在執(zhí)行的程序,程序的一次執(zhí)行過程,是資源調(diào)度的基本單位。下面就來詳細(xì)介紹改內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • python進(jìn)程類subprocess的一些操作方法例子

    python進(jìn)程類subprocess的一些操作方法例子

    這篇文章主要介紹了python進(jìn)程類subprocess的一些操作方法例子,本文講解了Popen、wait、poll、kill、communicate等方法的實(shí)際操作例子,需要的朋友可以參考下
    2014-11-11
  • 利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼

    利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼

    數(shù)據(jù)可視化和數(shù)據(jù)挖掘都是探索數(shù)據(jù)和分析數(shù)據(jù)的一種手段,下面這篇文章主要給大家介紹了關(guān)于如何利用Python進(jìn)行數(shù)據(jù)可視化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 解決numpy矩陣相減出現(xiàn)的負(fù)值自動(dòng)轉(zhuǎn)正值的問題

    解決numpy矩陣相減出現(xiàn)的負(fù)值自動(dòng)轉(zhuǎn)正值的問題

    這篇文章主要介紹了解決numpy矩陣相減出現(xiàn)的負(fù)值自動(dòng)轉(zhuǎn)正值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 使用sublime text3搭建Python編輯環(huán)境的實(shí)現(xiàn)

    使用sublime text3搭建Python編輯環(huán)境的實(shí)現(xiàn)

    這篇文章主要介紹了使用sublime text3搭建Python編輯環(huán)境的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例

    使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例

    這篇文章主要介紹了使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例,所謂排序,就是使一串記錄,按照其中的某個(gè)或某些關(guān)鍵字的大小,遞增或遞減的排列起來的操作,需要的朋友可以參考下
    2023-07-07
  • Pygame中Sprite的使用方法示例詳解

    Pygame中Sprite的使用方法示例詳解

    這篇文章主要介紹了Pygame中Sprite的使用方法,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法

    python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法

    我相信很多人在學(xué)習(xí)Python的時(shí)候,特別是在open文件的時(shí)候總還碰到,還報(bào)錯(cuò)IOError:[Errno?2]沒有這樣的文件或目錄:'E://aaa.txt',這篇文章主要給大家介紹了關(guān)于python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

蕉岭县| 天津市| 嫩江县| 莎车县| 定州市| 台中县| 阿坝| 库尔勒市| 成武县| 定陶县| 宜兴市| 象山县| 孟连| 抚远县| 侯马市| 墨脱县| 天门市| 友谊县| 凤翔县| 北碚区| 广昌县| 弋阳县| 石柱| 重庆市| 同江市| 衡阳县| 无锡市| 麟游县| 调兵山市| 泸州市| 新和县| 武夷山市| 玉树县| 运城市| 萝北县| 仁寿县| 谢通门县| 封开县| 卓尼县| 锡林郭勒盟| 宁阳县|