python實戰系列之ip位址排序問題 02

2021-12-29 16:30:39 字數 1883 閱讀 9741

1. 背景說明

從openstack的nova list中獲取了虛擬機器的ip位址,但這些ip都沒有排序和分組,為了進一步增強可讀性,對ip位址執行排序操作,在shell下,可以通過sort命令,執行排序操作,具體操作如下:

[root@controller ~]# cat ip.txt | sort -t "." -k1,1n -k2,2n -k3,3n -k4,4n

10.1.104.75

10.1.104.87

10.1.104.149

10.1.104.151

10.1.105.1

10.1.105.7   上面的方式,可以實現ip位址的排序,如下通過python的方式,實現ip位址的排序,以攜帶檔案的方式執行,先ip位址讀入到乙個列表中,通過列表的sort()方法,執行對ip位址的排序

2. 指令碼內容 

#!/usr/bin/env python

#-*- coding:utf8 -*-

'''author:happy

from: happy雲實驗室

歡迎交流

'''import sys

import os.path

def ipsort(filepath="ip.txt"):

'''定義乙個函式,用於將ip位址排序, 預設的檔案路徑是當前目錄下的ip.txt檔案,返回排序後的ip位址列表

'''try:

ip =

f = file(filepath,'r')

fcontext = f.readlines()

for ips in fcontext:

ips = ips.strip()

ip.append(ips)

ip.sort(lambda x,y: cmp(''.join( [ i.rjust(3, '0') for i in x.split('.')] ), ''.join( [ i.rjust(3, '0') for i in y.split('.')]))) #排序

f.close()

except exception,msg:

print "error:%s" % (msg)

sys.exit(1)

return ip

def main():

'''檢查指令碼攜帶引數的情況,必須攜帶乙個引數——檔名,並檢查檔名是否存在,呼叫排序的函式ipsort()

'''try:

if len(sys.ar**) != 2:

print "usage: %s %s" % (sys.ar**[0],sys.ar**[1])

else:

if os.path.exists(sys.ar**[1]):

filename=sys.ar**[1]

else:

print "%s is not exists!" % (sys.ar**[1])

sys.exit(1)

ip = ipsort(filename) #執行排序函式呼叫

for ips in ip:

print ips

except exception,msg:

print "\033[31merror: %s\033[0m" % (msg)

if __name__ == "__main__":

main()說明: 執行方式為,指令碼+引數的形式,如下為測試結果:

[root@controller ~]# /usr/local/sbin/ipsort.py /root/ip.txt

10.1.104.75

10.1.104.87

10.1.104.222

10.1.104.250

10.1.105.1

10.1.105.7

筆試系列之IP位址相關計算

做了幾個筆試題發現ip位址的相關計算還挺多的,而且我還不會啊,這怎麼辦,趕快拿個小本本記下來吧。1 ip位址的概念 對於主機來說,ip位址就是乙個32位的二進位制 為了提高可讀性 方便記憶 將ip位址分為4段,每段有8位,再轉換為十進位制,中間用.隔開。舉例如下 2 ip位址的分類 ip位址可以分為...

python 指令碼之 IP位址探測

第一種方法 usr bin env python coding utf8 該指令碼需要使用fping命令 如果沒有安裝需要提前安裝fping yum install fping import os ip 10.10.0.1 24 ips 10.10.0.1 24 192.16.17.27 24 需要...

系統實施系列之tomcat設定IP位址或者網域名稱訪問

本文介紹如何通過修改tomcat的配置,實現通過ip位址或者網域名稱直接訪問tomcat中應用。1找到tomcat的主目錄,進入conf資料夾,找到server.xml檔案,並開啟 步驟閱讀 2修改tomcat的監聽埠為80埠 在server.xml檔案中找到 修改成 如圖 步驟閱讀 3在serve...