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 相关文章推荐
Python实现类继承实例
Jul 04 Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
浅谈五大Python Web框架
Mar 20 Python
获取python文件扩展名和文件名方法
Feb 02 Python
Python实现的读取电脑硬件信息功能示例
May 30 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
快速了解Python开发环境Spyder
Jun 29 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 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 INI配置文件的解析实现分析
2011/01/04 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
PHP文件操作详解
2016/12/30 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
javascript常见用法总结
2014/05/22 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
NumPy排序的实现
2020/01/21 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
学校安全工作制度
2014/01/19 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
工作时间证明
2015/06/15 职场文书
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL