用Python生成批處理文件,用於修改IP、DNS

原因:管理windows虛擬機,需要修改IP、DNS等

直接給出代碼

import argparse
import os

# 獲取當前腳本路徑
current_path = os.path.dirname(os.path.abspath(__file__))

# 用於接受命令行參數(ip)
parser = argparse.ArgumentParser(description='Process a IP.')
parser.add_argument('ip', metavar='N', type=str, nargs='+',
                    help='ip address')

args = parser.parse_args()

# 獲取ip,只取第一個
ip = args.ip[0]

# 根據ip,生成對應gateway
gateway = "192.168.{}.1".format(ip.split('.')[2])

# 這句是設置ip的命令(當前是設置靜態IP)
change_ip = 'netsh interface ip set address name="本地連接" source=static addr={} mask=255.255.255.0 gateway={} 1'.format(ip, gateway)

# 配置DNS服務器,一般都是固定的,所以沒有放到參數中
first_dns = "192.168.16.2"
# 備用DNS服務器
second_dns = "192.168.19.2"

# 設置dns及備用dns
change_dns = 'netsh interface ip set dns name="本地連接" source=static addr={}'.format(first_dns)
append_dns = 'netsh interface ip add dns name="本地連接" addr={}'.format(second_dns)

# 查看配置信息
check_ip = "ipconfig /all"

bat = [change_ip, change_dns, append_dns, check_ip]

filename = "{}.bat".format(ip.replace('.', '_'))
# 將其寫入bat中,可以將其中的內容複製出來,可以手動複製,也可以使用pyperclip庫,將內容直接複製到粘貼板
with open(os.path.join(current_path, filename), 'w', encoding='utf-8') as f:
    for i in bat:
        f.write(i + '\n')


# 執行命令,將IP放入後面
python test_cmd.py 192.168.67.27

pyperclip用法

import pyperclip

text = '123'
pyperclip.copy(text)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章