Python实现自动装机功能案例分析


Posted in Python onOctober 22, 2020

前言

提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多厂商机器的管理和控制,仍在调研中。


提示:以下是本篇文章正文内容,下面案例可供参考

一、利用snmp协议获取到目标机器的网卡mac地址

代码如下

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地址做防火墙控制

防火墙的初始化:

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实现自动装机功能案例分析的文章就介绍到这了,更多相关Python自动装机内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
python对html代码进行escape编码的方法
May 04 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
python 数据分析实现长宽格式的转换
May 18 Python
python如何控制进程或者线程的个数
Oct 16 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
Python reversed反转序列并生成可迭代对象
Oct 22 #Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 #Python
Python类的继承super相关原理解析
Oct 22 #Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 #Python
Python基于内置函数type创建新类型
Oct 22 #Python
python使用ctypes库调用DLL动态链接库
Oct 22 #Python
Python通过len函数返回对象长度
Oct 22 #Python
You might like
php session应用实例 登录验证
2009/03/16 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
js控制div及网页相关属性的代码
2009/12/19 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
keras的三种模型实现与区别说明
2020/07/03 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
学校爱心捐款倡议书
2014/05/13 职场文书
环境日宣传活动总结
2014/07/09 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
党风廉正建设责任书
2015/01/29 职场文书
田径运动会广播稿
2015/08/19 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers