机房IP修改

先说明不足之处

  • 机房系统,保证程序兼容性,不安装Python,所以不采用bat脚本调用py脚本获取返回值的用法
  • py脚本中调用bat,涉及管理员权限问题,传参不正常,不采用
  • 纯py脚本在选择网卡和修改IP时极其心累繁琐,不采用
  • bat脚本对字符串处理上,,还是两者混合写吧
  • 传参问题,上述方法不能用后,采用比较慢一点的方法,文本传参,大佬勿喷

那么,为解决机房由于联想还原系统出问题而带来的IP混乱问题,开始干活

开始干活

准备工作

  • 提取获取机房每台机器Mac地址(开机情况下扫描局域网即可)
  • 准备一个txt文本将mac写入并在每一条Mac前分配一个IP,格式如下表,命名:ip.txt
IPMAC
192.168.1.1d8-ce-8b-0g-18-61
  • 编写py,bat脚本
  • 打包py脚本为exe
  • 将ip.txt与bat脚本、py打包文件(NIP_Get.exe)打包为exe,并设置开机自自启

NIP_Get.py

import uuid
import re
import os
try: # 代码中所有try供调试使用,可根据情况修改
    address = hex(uuid.getnode())[2:]
    mac = '-'.join(address[i:i+2] for i in range(0, len(address), 2))
    print(mac)
except:
    print("all Error!!!")
    os.system("pause")
    exit()
    
try:
    f = open('ip.txt') #打开ip.txt读取本机mac和ip对应关系
    lines = f.readlines()
except:
    print("file read error!!!")
    os.system("pause")
    exit()
else:
    f.close()
    l_list = lines[0:] #从文本第一行开始读取

for l in l_list:
    if mac.lower() in l: #如果存在
        try: #匹配IP,提取
            local_ip = re.findall(r"((?:(?:25[0-5]|2[0-4]\d|(?:1\d{2}|[1-9]?\d))\.){3}(?:25[0-5]|2[0-4]\d|(?:1\d{2}|[1-9]?\d)))",l)
            get_ip = ''.join(local_ip)
            print(get_ip) # str(local_ip)[2:-2]
        except:
            print("Get ip error!!!")
            os.system("pause")
            exit()
        with open('local.txt', 'w') as f: #写入local文本传参
            f.write(get_ip)
        f.close()
        exit()
print("未找到改IP")
os.system("pause")
exit()

Seriously.bat

@echo off
cd /d "%~dp0"
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit
:Admin
:: 上面代码表示让脚步已管理员模式运行
color 70
echo **************************************************************************
echo **************************************************************************
echo Start....
start "" "NIP_Get.exe"
echo 如果我卡住,不要管我,一切正常!!!不要关闭!!!
ping 1**.30.1**.1 -n 4
set /p local_IP=<local.txt
::      代码中涉及ip部分数字用*代替
::      上面的ping为了延时,文本传参慢1s,直接运行下一步报错
::      下面有任何报错都可以正常运行
netsh interface ipv4 set address name="本地连接" source=static addr=%local_IP% mask=255.255.255.0 gateway=1**.30.1**.1 gwmetric=0 >nul
echo 正在添加本机首选DNS服务器...
netsh interface ipv4 set dns name="本地连接" source=static addr=2**.1**.***.*** register=PRIMARY
echo 正在添加备用DNS服务器...
netsh interface ipv4 add dns name="本地连接" addr=2**.***.***.***
echo 检查当前本机配置...
ipconfig /all
cls
echo 检查完成,IP已修改
echo  
pause

打包py脚本

进入python脚本所在目录,打开dos,pip安装pyinstaller
打包:

pyinstaller -F NIP_Get.py
#带动态库的打包
pyinstaller NIP_Get.py

使用winrar打包为自解压程序

将NIP_Get.py和bat、ip.txt三个文件打包为自解压的exe程序,避免被人直接修改

设置

在母机上将最后打包好的文件设置为开机自启,同传,机房IP混乱问题解决

结语

代码和思路均有不足之处,保证兼容性情况下写这个程序仍有太多不足,望有人可以帮我补充,修改!
另一种方法
感谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值