python學習之編寫查詢ip程式

來源:互聯網
上載者:User
公司伺服器上的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.pyimport 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 systry:  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!程式完了。很簡單,但好像也很實用。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.