2011-09-28 35 views
10

Tôi sử dụng máy tính của mình để giao tiếp với một phần cứng thông qua ethernet. Để giao tiếp với thiết bị này, tôi đặt ip của mình là 192 168 0 11, mặt nạ mạng con thành 255 255 255 0 và cổng mặc định là 192 168 0 1 cho IPv4. Để sử dụng internet, tôi chọn "Tự động lấy địa chỉ IP" qua bảng điều khiển.Kịch bản để thay đổi địa chỉ IP trên windows

Tôi muốn có một tập lệnh cho phép tôi nhanh chóng chọn một hoặc một cài đặt ethernet khác - phần cứng hoặc internet.

Tôi lập trình chủ yếu bằng python nhưng có thể có giải pháp tệp bó.

Xin cảm ơn,

Barry.

+0

Câu hỏi liên quan: http://stackoverflow.com/questions/83756/how-to-programmatically-enable-disable-network-interfaces-windows-xp – tzot

Trả lời

16

Bạn có thể sử dụng Python WMI module để làm điều này (cài đặt PyWin32 extensions và các mô-đun WMI trước khi chạy các kịch bản). Dưới đây là làm thế nào để cấu hình điều cần nói chuyện với các thiết bị phần cứng:

import wmi 

# Obtain network adaptors configurations 
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True) 

# First network adaptor 
nic = nic_configs[0] 

# IP address, subnetmask and gateway values should be unicode objects 
ip = u'192.168.0.11' 
subnetmask = u'255.255.255.0' 
gateway = u'192.168.0.1' 

# Set IP address, subnetmask and default gateway 
# Note: EnableStatic() and SetGateways() methods require *lists* of values to be passed 
nic.EnableStatic(IPAddress=[ip],SubnetMask=[subnetmask]) 
nic.SetGateways(DefaultIPGateway=[gateway]) 

ở đây là làm thế nào để trở lại gán địa chỉ IP tự động (thông qua DHCP):

import wmi 

# Obtain network adaptors configurations 
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True) 

# First network adaptor 
nic = nic_configs[0] 

# Enable DHCP 
nic.EnableDHCP() 

Lưu ý: trong một kịch bản sản xuất bạn nên kiểm tra các giá trị được trả lại bởi EnableStatic(), SetGateways()EnableDHCP(). ('0' có nghĩa là thành công, '1' có nghĩa là khởi động lại cần thiết và các giá trị khác được mô tả trên các trang MSDN liên kết với tên phương thức. Ghi chú: cho EnableStatic() và SetGateways(), mã lỗi được trả về dưới dạng danh sách).

Thông tin đầy đủ về tất cả chức năng của lớp Win32NetworkAdapterConfiguration cũng có thể là found on MSDN.

Lưu ý: Tôi đã thử nghiệm điều này với Python 2.7, nhưng khi mô-đun PyWIn32 và WMI có sẵn cho Python 3, tôi tin rằng bạn có thể làm việc này cho Python 3 bằng cách xóa "u" từ trước chuỗi ký tự.

3

Bạn có thể sử dụng subprocess module để bắt đầu

netsh interface ip set address [params] 

Bắt đầu này từ dòng lệnh (không có [params]) để có được một số giúp đỡ làm thế nào để sử dụng nó. Sau đó, bạn có thể làm

import subprocess 
subprocess.call("netsh interface ip set address ....".split()) 
Các vấn đề liên quan