Quản lý các mạng Windows dùng script - Phần 6: Những bước đầu tiên
về scripting remote
Tìm hiểu kỹ thuật scripting remote (viết kịch bản chạy trên các máy từ
xa) sử dụng lớp WMI Win32_NetworkAdapterConfiguration đã được
giới thiệu ở phần trước.
Trở lại với script ChangeIPAddress.vbs mà chúng ta đã phát triển ở các phần
trước để thay đổi địa chỉ IP của một bộ điều hợp mạng:
Option Explicit
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim strAddress
Dim arrIPAddress
Dim arrSubnetMask
Dim colNetAdapters
Dim errEnableStatic
If WScript.Arguments.Count = 0 Then
Wscript.Echo "Usage: ChangeIPAddress.vbs
new_IP_address"
WScript.Quit
End If
strComputer = "."
strAddress = Wscript.Arguments.Item(0)
arrIPAddress = Array(strAddress)
arrSubnetMask = Array("255.255.255.0")
Set objWMIService = GetObject("winmgmts:\\" &
strComputer & "\root\cimv2")
Set colNetAdapters =
objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where
Copyright (C) Microsoft Corporation 1996-2001. All
rights reserved.
C:\locatest>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . :
172.16.11.54
Subnet Mask . . . . . . . . . . . :
255.255.255.0
Default Gateway . . . . . . . . . :
172.16.11.1
C:\locatest>
Chú ý 1: Nên nhớ rằng, để thay đổi địa chỉ IP trên máy Windows XP đòi hỏi
phải sử dụng đặc quyền quản trị cục bộ. Do đó, nếu bạn hiện đang đăng
nhập vào máy với vai trò người dùng miền bình thường, cần phải mở cửa sổ
Command Prompt, sau đó gõ lệnh: runas /user:administrator cmd.exe để
mở một cửa sổ Command Prompt thứ hai chạy trong ngữ cảnh của vai trò
quản trị cục bộ và cuối cùng là chạy script từ cửa sổ Command Prompt thứ
hai này.
Nhưng nếu muốn chạy script trên một máy và sử dụng nó để thay đổi địa chỉ
IP của một máy khác thì sao? Nói cách khác, chúng ta muốn chạy script từ
xa trên một máy Windows XP ở xa thì phải làm như thế nào?
Cố gắng đầu tiên
Chúng ta hãy bắt đầu bằng việc đăng nhập vào một trạm làm việc admin
xp.contoso.com, sử dụng thông tin thẩm định của một tài khoản admin có
tên là Mary Jones. Chúng ta cần thực hiện điều này vì các admin miền có
đặc quyền quản trị cục bộ trên tất cả các máy trong miền. Do đó, khi chạy
IP Address. . . . . . . . . . . . :
172.16.11.43
Subnet Mask . . . . . . . . . . . :
255.255.255.0
Default Gateway . . . . . . . . . :
172.16.11.1
C:\locatest>
Bạn có thể thấy địa chỉ của máy vẫn là 172.16.11.43. Tức là script này
không hoạt động.
Vậy, sai ở điểm nào? Thông báo lỗi chỉ ra rằng có một vấn đề với dòng 20
của script. Dòng 20 có dạng:
Set objWMIService = GetObject("winmgmts:\\" &
strComputer & "\root\cimv2")
Dường như script không thể kết nối với dịch vụ WMI trên một máy từ xa.
Nguyên nhân là do đâu?
Cố gắng thứ hai
Chúng ta có thể làm một điều gì đó với Windows Firewall trên máy từ xa.
Nên nhớ rằng, Windows XP SP2 có một tường lửa sẽ loại bỏ hầu hết mọi
lưu lượng đến ngoại trừ lưu lượng được cấu hình riêng. Cách đơn giản nhất
để kiểm tra điều này là tắt Windows Firewall trên các máy tính đích. Đăng
nhập vào xp2.contoso.com với vai trò admin, mở ứng dụng Windows
Firewall trong Control Panel và chọn thiết lập Off trên tab General.
Bây giờ chạy lại script từ trạm admin:
C:\tools>ChangeIPAddress.vbs 172.16.11.65Microsoft
(R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All
rights reserved.
C:\tools\ChangeIPAddress.vbs(23, 6) SWbemObjectEx:
The remote procedure call failed.
để mở Local Group Policy và đặt thiết lập chính sách sau (xem Hình 1):
Computer Configuration\Administrative Templates\Network\Network
Connections\Domain Profile\Windows Firewall: Allow remote
administration exception
Hình 1: Thiết lập chính sách Windows Firewall để cho phép quản trị từ xa
Kích đúp lên thiết lập chính sách này và cho phép nó trên mạng con cục bộ
(Hình 2). Nhớ là trạm admin phải nằm trên cùng một subnet với máy tính
đích.
Hình 2: Cho phép ngoại lệ quản trị từ xa
Chú ý 2: Tất nhiên, có thể bạn muốn thực hiện điều này khác đi một chút và
cấu hình thiết lập chính sách trong một Group Policy Object (GPO) miền
thay vì cục bộ. Nhưng nếu như vậy thì bạn không thể cho phép ngoại lệ này
trên máy cục bộ để chạy tường lửa cùng với script.
Bây giờ, chạy lại script từ trạm admin và cố gắng thay đổi địa chỉ IP của
máy từ xa từ 172.16.11.65 thành 172.16.11.66:
C:\tools>ChangeIPAddress.vbs 172.16.11.66
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All
rights reserved.
C:\tools\ChangeIPAddress.vbs(23, 6) SWbemObjectEx:
The remote procedure call failed.
C:\tools>
Lại một lỗi như trên xuất hiện, nhưng khi gõ lệnh ipconfig vào cửa sổ
Command Prompt trên máy từ xa, ta có kết quả như sau:
C:\locatest>ipconfig
Windows IP Configuration