Python实现自动装机功能案例分析
作者:weixin_42952974 发布时间:2022-05-16 12:35:48
标签:Python,自动装机
前言
提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以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进行装机操作
来源:https://blog.csdn.net/weixin_42952974/article/details/109195680
0
投稿
猜你喜欢
- 什么是yaml一种标记语言。yaml 是专门用来写配置文件的语言,非常简洁和强大更直观,更方便,有点类似于json格式yaml文件格式:te
- 本文实例讲述了Python面向对象实现一个对象调用另一个对象操作。分享给大家供大家参考,具体如下:我先总结一下python中的类的特点:1.
- MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型下面
- 今天偶尔在一个学习网站技术的地方看到一个教程,关于html代码的,刚看到咱常用到的视频播放器html标签Object,平时用到他的时候都是为
- 本文实例为大家分享了python实现简单计算器功能的具体代码,供大家参考,具体内容如下效果如图:主要思路:用列表保存按下的键,按下等于,转换
- 一.ajax介绍1、ajax的含义Ajax全称“Async Javascript And XML”即:异步的javascript和XML。它
- 这篇文章主要介绍了Python Django 简单分页的实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 1、解决方法(1)忽视元组。缺少类别标签时,通常这样做(假设挖掘任务与分类有关),除非元组有多个属性缺失值,否则该方法不太有效。当个属性缺值
- #!/usr/bin/python# -*- coding: utf-8 -*-from scapy.all import *from ti
- 页面中无法看见页面,指向的连接网页无法显示 解决方法:1、首先在Dreamweaver中不能中文作为文件名。连目录名也最好是英文的。2、如果
- python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到。d
- 最近在做图片相关的工作,面对各种格式的图片转换,在OpenCV跟Pillow之间来回切换。觉得有必要把这些东西记录下来,以备不时之需。首先介
- 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升。这个例子中被封装的dll文件可以隐藏access数据库的实际
- 在python3的sorted中去掉了cmp参数,转而推荐“key+lambda”的方式来排序。如果需要对python的list进行多级排序
- 漏洞的产生原因代码层过滤不严。应用程序直接或间接使用了动态执行命令的危险函数,并且这个函数的运行参数是可控的系统的漏洞造成命令注入漏洞的本质
- 前面简单介绍了Python基本运算,这里再来简单讲述一下Python字符串相关操作1. 字符串表示方法>>> "
- 1、Python数据存储(压缩)(1)numpy.save , numpy.savez , scipy.io.savematnumpy和sc
- 一、简介eval()函数用来执行一个字符表达式的值,并返回表达式的值二、语法具体语法:eval(expression[, globals[,
- 有时候会碰到需求,将字典来反转,即:字典中的键作为值,而字典中的值作为键。对于字典比较小,可以使用普通方法方法一:使用普通方法转换>&
- 使用Access数据库生成申报数据与读入数据的实例方法:示例:Sub Mwrite()On Error GoTo thiserrDim rs