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...