Giới thiệu về Scripting Romote và xây dựng Scripting Romote

Một phần của tài liệu Giáo trình quản trị hệ thống mail server và web server (nghề quản trị mạng máy tính) (Trang 40 - 46)

2. Nguyên tắc hoạt động của WMI

3.1. Giới thiệu về Scripting Romote và xây dựng Scripting Romote

Tìm hiểukỹ thuật scripting remote (viếtkịch bảnchạ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:

35

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ếubạ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ứ

36

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à:

37

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ắngthứ 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:

38

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

39

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ảntrị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

40

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.

Một phần của tài liệu Giáo trình quản trị hệ thống mail server và web server (nghề quản trị mạng máy tính) (Trang 40 - 46)