Tải bản đầy đủ (.pdf) (9 trang)

Quản lý các mạng Windows dùng script - Phần 6: Những bước đầu tiên về scripting remote ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (220.64 KB, 9 trang )

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 IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress,
arrSubnetMask)


Next
Chú ý là các chú thích đã được loại bỏ và phần mã ở cuối hiển thị kết quả.
Điểm qua lại một chút về hoạt động của script này:
1.

Kết nối tới namespace root\cimv2 trên máy cục bộ.
2.

Sử dụng một lệnh SELECT để trả về tập hợp các cấu hình bộ điều hợp
mạng có đường bao TCP/IP và được phép sử dụng.
3.

Thay đổi địa chỉ IP của bộ điều hợp thành giá trị được mô tả trong tham
số dòng lệnh.
Chúng ta đã ghi lại script này trong thư mục C:\localtest trên một máy
Windows XP có địa chỉ IP tĩnh là 172.16.11.43. Sau đó, mở của sổ dòng lệnh
Command Prompt với vai trò admin trên máy và sử dụng script này để thay đổi
địa chỉ IP của máy thành 172.16.11.54:
C:\locatest>ipconfig
Windows IP Configuration

Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.11.43
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.11.1
C:\locatest>ChangeIPAddress.vbs 172.16.11.54
Microsoft (R) Windows Script Host Version 5.6
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 script từ
trạm admin trên một máy từ xa, script sẽ hoạt động.
Bây giờ chúng ta đã có script ChangeIPAddress.vbs trong thư mục C:\tools ở
trạm admin xp.contoso.com. Mở cửa sổ lệnh Command Prompt trên máy này
và gõ vào hai dòng sau:
C:\Documents and Settings\mjones>cd \tools
C:\tools>notepad ChangeIPAddress.vbs
Script được mở trong Notepad, thay đổi dòng bên dưới:

strComputer = "."
thành:
strComputer = "xp2 "
Sau đó vào File/Save để ghi lại thay đổi và đóng Notepad. Bây giờ, chạy script:
C:\tools>ChangeIPAddress.vbs 172.16.11.65
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
C:\tools\ChangeIPAddress.vbs(20, 1) Microsoft VBScript runtime error: The
remote server machine does not exist or is unavailable: 'GetObject'

C:\tools>
Chú ý là sẽ phải mất một lúc trước khi thông báo lỗi ở trên xuất hiện. Nhưng
như vậy script có làm việc không? Nếu đăng nhập vào máy từ xa
xp2.contoso.com, mở cửa sổ Command Prompt và gõ ipconfig, kết quả thu
được sẽ là:
C:\locatest>ipconfig
Windows IP Configuration

Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
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.

C:\tools>
Lại một lỗi khác, và lại phải mất rất lâu thông báo lỗi này mới xuất hiện.
Nhưng ít nhất thì đó là một lỗi khác và được ghi nhận là ở dòng 23:
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress,
arrSubnetMask)
Bây giờ, gõ lệnh ipconfig ở cửa sổ Command Prompt trên máy từ xa, ta có kết
quả sau:
C:\locatest>ipconfig
Windows IP Configuration

Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.11.65
Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 172.16.11.1
C:\locatest>
Có vẻ như script đã hoạt động! Nhưng vẫn để lại hai vấn đề:
1.

Chúng ta không muốn tắt chức năng của Windows Firewall trên các máy
từ xa khi chạy script này trên chúng. Vậy, liệu có cần phải thiết lập một
ngoại lệ để các máy này cho phép chạy script từ xa trong khi vẫn mở
Windows Firewall.
2.

Còn về lỗi RPC ở trên? Script hoạt động nhưng vẫn trả ra một lỗi. Tại
sao lại như vậy?
Ngoại lệ cho scripting từ xa
Mở lại Windows Firewall trên máy từ xa, script sẽ không chạy được. Bây giờ,
từ cửa sổ Command Prompt mức admin trên máy, gõ lệnh gpedit.msc để 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

Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.11.66
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.11.1
C:\locatest>
Nó đã làm việc! Như vậy, chúng ta có thể mở Windows Firewall trên máy từ
xa đồng thời dùng Group Policy để mở một ngoại lệ cho quản trị từ xa trong
tường lửa và thay đổi từ xa địa chỉ IP của máy bằng cách chạy script từ một
trạm admin.
Chúng ta đã giải quyết được vấn đề thứ nhất, còn vấn đề thứ hai thì sao?
Bí mật bao giờ cũng có sức hấp dẫn riêng của nó. Vì thế, hãy tạm thời để vấn
đề thứ hai sang phần sau của bài.

×