某日,使用CentOS7,發現網絡配置時,子網掩碼需要手動轉換;因為CentOS 7的網絡配置方式為:
nmcli connection enp4s0 modify ipv4.methord manual ipv4.address "192.168.1.120/24" ipv4.gateway "192.168.1.1" ipv4.dns "223.5.5.5"
其中沒有子網掩碼的配置項。於是,寫一函數,實現子網掩碼和位長的相互轉換。
一:子網掩碼轉化為位長:
# coding:utf-8
def exchange_mask(mask):
# 計算二進制字符串中 '1' 的個數
count_bit = lambda bin_str: len([i for i in bin_str if i=='1'])
# 分割字符串格式的子網掩碼為四段列表
mask_splited = mask.split('.')
# 轉換各段子網掩碼為二進制, 計算十進制
mask_count = [count_bit(bin(int(i))) for i in mask_splited]
return sum(mask_count)
if __name__ == '__main__':
print exchange_mask('255.255.0.0')
二:位長轉化為子網掩碼:
#codint = utf8
def exchange_maskint(mask_int):
bin_arr = ['0' for i in range(32)]
for i in range(mask_int):
bin_arr[i] = '1'
tmpmask = [''.join(bin_arr[i * 8:i * 8 + 8]) for i in range(4)]
tmpmask = [str(int(tmpstr, 2)) for tmpstr in tmpmask]
return '.'.join(tmpmask)
if __name__ == '__main__':
print exchange_maskint(24)
下面關於Python的文章您也可能喜歡,不妨參考下:
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] 下載見 http://www.linuxidc.com/Linux/2013-06/85425.htm
零基礎如何入門Python http://www.linuxidc.com/Linux/2016-10/136485.htm
Ubuntu 14.04安裝Python 3.3.5 http://www.linuxidc.com/Linux/2014-05/101481.htm
CentOS 6.5 腳本自動化裝 Python2.6升級2.7 http://www.linuxidc.com/Linux/2017-02/140406.htm
CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm
Ubuntu 14.04下Python數據處理環境搭建 http://www.linuxidc.com/Linux/2017-01/139568.htm
Python Paramiko模塊安裝和使用 http://www.linuxidc.com/Linux/2017-01/139973.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
在CentOS 6.5上安裝Python2.7 http://www.linuxidc.com/Linux/2016-10/136206.htm
Ubuntu 14.04 LTS下編譯安裝Open Babel和Python語言綁定 http://www.linuxidc.com/Linux/2017-01/139569.htm
Python常見數據結構整理 http://www.linuxidc.com/Linux/2017-02/140613.htm