時間:2020-10-22來源:www.outletmksalestore.com作者:電腦系統城
前言
提示:在管理服務器的過程中,發現有很多服務器在啟動的過程中默認以PXE方式啟動,這就導致我們無法將PXE裝機程序放開到所有的交換機端口中,本文是以Python對dell服務器進行了一些控制,更多廠商機器的管理和控制,仍在調研中。
提示:以下是本篇文章正文內容,下面案例可供參考
一、利用snmp協議獲取到目標機器的網卡mac地址
代碼如下
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
def get_mac(ipmi, netcard): #ipmi即服務器idrac_ip,netcard即網卡序列號(一般是4個,從1開始) # 將控制卡IP傳給snmp命令,獲取mac地址 popen = subprocess.Popen(f 'snmpwalk -v 2c -c public {ipmi} 1.3.6.1.4.1.674.10892.5.4.1100.90.1.6.1.{netcard}' , stdout = subprocess.PIPE, shell = True ) popen.wait() res = popen.stdout.read().decode().split()[ - 1 ].split( '"' )[ 0 ] res1 = res.replace( ":" , "") res2 = res.lower() # 獲取到的mac地址,去空格,寫入到文件中 with open ( "/root/allow_mac" , mode = "w" , encoding = "utf-8" ) as f: f.write(res + "\n" ) print (res) #獲取到mac地址的目的有兩個,可以將mac地址傳給后端交換機,交換機找到對應的接口,自動進行網絡配置的下發, #另外一個是針對mac地址做防火墻控制 |
防火墻的初始化:
?1 2 3 4 5 6 7 8 9 10 11 12 13 |
def init_iptables(): # 調用iptables初始化防火墻策略 print ( "防火墻開始初始化" ) subprocess.call( '/sbin/iptables -F ' , shell = True ) subprocess.call( '/sbin/iptables -P OUTPUT ACCEPT ' , shell = True ) subprocess.call( '/sbin/iptables -A INPUT -m state --state INVALID -j DROP ' , shell = True ) subprocess.call( '/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT ' , shell = True ) subprocess.call( '/sbin/iptables -P INPUT DROP ' , shell = True ) # stdout = subprocess.call('/sbin/iptables -L ', shell=True) # print(stdout) # subprocess.call('systemctl stop dhcpd ', shell=True) print ( "防火墻初始化完畢" ) #主要就是封裝了一系列防火墻的配置,在裝機完成之后,可以進行再控制,防止其他機器通過pxe-server進行裝機操作 |
到此這篇關于Python實現自動裝機功能案例分析的文章就介紹到這了
2022-03-01
PHP如何從txt文件中讀取數據詳解2022-03-01
分享5個方便好用的Python自動化腳本2021-03-29
Python中pycharm編輯器界面風格修改方法