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
投稿
猜你喜欢
- 如何在本地机器上创建缓存?用法到是很简单,只需先创建Stream对象的实例,然后开始写入数据即可: Dim str&n
- Ajax在网上已经叫喊了好几年了, 但是还是有很多像我这样的新手没掌握它, 像这样能改善交互体验的技术不会用真是很遗憾呢. 所以我就把我学到
- Mysql查看是否使用到索引mysql数据库创建索引优化之后,在查询时想看下是否使用到索引,使用执行计划查看:mysql> expla
- 今天我们会讲到一个[装饰器]注记:链接“装饰器”指Python3教程中的装饰器教程。可以在这里快速了解什么是装饰器。@functools.l
- 基于signal模块实现signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIG
- 一、查询某个字段重复 select * from User u whe
- 本文实例讲述了python实现字符串和日期相互转换的方法。分享给大家供大家参考。具体分析如下:这里用的分别是time和datetime函数&
- 现如今,各个国家交流密切,通过翻译使我们打破了语言壁垒,而翻译在互联网上的存在也尤为普遍。python中执行翻译操作的包是translate
- 移动端适配满足多个查询时的优先级: 请注意,可以同时满足多个查询,并且它们都将由mergeOption合并,mergeOption稍后由me
- 背景环境:ArcGis10.2.2。C#开发程序一直以来以调用Desktop的python环境(32位)来做数据处理分析。但是数据量大时,出
- 本文目标:使用selenium3.0+python3操纵浏览器,打开百度网站。(相当于selenium的hello world)环境基础:p
- 前言使用axios可以统一做请求响应拦截,例如请求响应时我们拦截响应信息,判断状态码,从而弹出报错信息。请求超时的时候断开请求,还可以很方便
- 对象数组中匹配某个属性值如果有一个js对象数组,一个变量如下var a = [ {  
- 这里我们采用的是使用Oracle数据库进行相关操作在连接数据库之间,应下载相应的工具包cx_Oracle,在你安装的Python文件夹中找到
- 我们假设TPCoins的发起人最初向已知客户 Dinesh 发出500个TPCoins.为此,他首先创建一个Dinesh
- Git是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。Git 最初是由Linus Torvalds设计开发
- 背景:先说一下应用吧,一般我们进行网络训练时,都有一个batchsize设置,也就是一个batch一个batch的更新梯度,能有这个batc
- 1 from multiprocessing import Pool,Queue。其中Queue在Pool中不起作用,具体原因未明。解决方案
- 直接看代码using System;using System.Configuration;using MySql.Data.MySqlCli
- 1. 开发1.1. 架构Gorm使用可链接的API,*gorm.DB是链的桥梁,对于每个链API,它将创建一个新的关系。db, err :=