Đây là phần đầu tiên trong loạt bài về các mạng Windows scripting. Phần này đề cập đến những khái niệm cơ bản nhất về kỹ thuật scripting (kỹ thuật viết kịch bản) trong các mạng chạy hệ điều hành Windows. Những phần còn lại của loạt bài sẽ chuyển đến các bạn nội dung chi tiết của nhiều khía cạnh khác nhau trong chủ đề này. Có một câu nói như thế này, không rõ của vĩ nhân hay thường dân nào nhưng tôi thấy quả rất chí lý: “Đưa cho một anh chàng sắp chết đói một con...
Quản lý mạng Windows dùng Script - Phần 1: Những khái niệm Đây phần loạt mạng Windows scripting Phần đề cập đến khái niệm kỹ thuật scripting (kỹ thuật viết kịch bản) mạng chạy hệ điều hành Windows Những phần lại loạt chuyển đến bạn nội dung chi tiết nhiều khía cạnh khác chủ đề Có câu nói này, khơng rõ vĩ nhân hay thường dân thấy chí lý: “Đưa cho anh chàng chết đói cá, bạn ni ngày; dạy cho cách câu cá, bạn ni đời” Cịn thế, giới bận rộn chuyên gia công nghệ thông tin (mà quen miệng gọi dân IT) làm việc với kỹ thuật scripting: “Đưa cho admin script, bạn giúp giải vấn đề; dạy cách viết script nào, bạn giúp làm công việc gắn liền với đời anh ta” Giá mà tự động hố cơng việc quản trị hàng ngày script, sống admin thoải mái nhẹ nhàng nhiều Tại cần phải biết dùng script? Khơng phải có hàng trăm script viết sẵn trôi giới mạng mà bạn tải dùng cách dễ dàng, lấy từ nguồn trung tâm Script Center Script Repository Microsoft chẳng hạn Vậy sao? Hàng trăm kịch (script) viết sẵn, xin thưa Tải dùng dễ dàng, xin thưa lại Ấy mà chưa đủ Chúng hữu ích giúp đỡ bạn nhiều, nhiều đòi hỏi riêng theo cấu hình cụ thể mơi trường bạn lại làm khó chúng Có hàng trăm hàng nghìn script tải bạn chọn lọc script phù hợp mà phải điều chỉnh đơi chút Đơn giản tác giả viết không nằm tổ chức bạn, không thực theo cấu hình bạn mối quan tâm họ lại hướng đến khác Khi admin phải trở thành ơng thợ sửa chữa lành nghề, thay đổi chỗ chút, thay đổi chỗ tý, ghép ghép nối nối để biến vài scrip nhỏ lẻ thành script hợp lớn hay dùng liệu đầu script làm thành liệu đầu vào cho script khác, hay biến thành cơng cụ hoạt động cho máy từ xa… Quả nhiều việc! Anh thợ máy muốn sửa chữa máy móc phải hiểu cấu trúc nó, điều khơng phản bác Bởi mà anh “thợ” admin muốn biến đổi, điều chỉnh script phải hiểu nó, phải biết cách xây dựng viết nó, biến hay có sẵn thành riêng mình, phù hợp với Và lúc người ta gọi anh “thợ lành nghề” Muốn vậy, phải bắt đầu với điều nhất, Windows scripting Nói đến script, nhiều người tưởng chừng khó, thực khó trước hết… script khó dịch sang tiếng Việt! Script nghĩa “kịch bản”, dân công nghệ đâu phải người làm phim nên kịch giới IT toàn đoạn mã loằng ngoằng mà có chun gia hiểu, cịn nhiều người “thường thường bậc trung” như… sinh viên cơng nghệ chịu! Chính mà hơm nhất, sau nâng cao dần khả hiểu khía cạnh sâu xa viết dùng script mạng Windows Mục đích cuối mà hướng tới kể người bắt đầu tìm hiểu bạn, tơi script hố tự động công việc, để sống admin an nhàn Chúng ta thực điều script bạn viết download từ nhiều nguồn khác Chúng ta biết số tài nguyên liên quan đáng tìm hiểu để có nhìn sâu sắc Windows scripting, số cơng cụ trợ giúp hữu ích tương lai Các thiết lập TCP/IP scripting Hầu admin dùng Visual Basic Script (VBScript) để viết kịch quản trị Windows (Windows admin script) VBScript không ngôn ngữ mạnh mà cú pháp cịn đơn giản để học làm VBScript dùng chung với Windows Management Instrumentation (WMI) Active Directory Services Interfaces (ADSI) để viết kịch cho khía cạnh hệ thống chạy hệ điều hành Windows hay mạng dùng Active Directory Chúng ta bắt đầu học Windows scripting cách dùng VBScript với WMI để thực điều hữu ích: thay đổi địa IP network adapter Tại lại cần thực điều này? Đó phải sử dụng nhiều đến máy chủ ảo PC ảo để thiết lập môi trường kiểm tra Chúng ta cần phải chuyển máy ảo (VM) chạy hệ điều hành Windows Server 2003 từ mạng ảo sang mạng ảo khác để sử dụng lại server (máy chủ) cho số mục đích khác Như có nghĩa cần thay đổi địa IP server (cũng cổng vào mặc định nữa) Bạn thực điều cách mở Network Connections Control Panel kích phải chuột lên Local Area Connections, chọn Properties > Internet Protocol (TCP/IP) tab General bấm chọn Properties, nhập địa IP ấn OK hai lần Đây cách thực phổ biến nghe qua bạn thấy dài dòng mệt mỏi Với chuyên gia, họ thích sử dụng Command Promt hơn, lệnh dùng Netsh Song, sử dụng lệnh bạn cần cẩn trọng có nhiều ngữ cảnh, lệnh tham số khác khó nhớ Thực sai thao tác dẫn đến hậu nghiêm trọng Nếu chưa thực chắn, nhờ giúp đỡ phần trợ giúp Help quay trở lại cách thứ Nhưng mục đích học script Do đó, xem xét cách thay đổi địa IP máy dùng VBScript WMI mà trước hết phải biết đến số khái niệm đối tượng (object), phương thức (method), thuộc tính (property), namespace… Để bắt đầu, chạy script máy cục bộ: strComputer = "." Ở đây, tiền tố str- đặt đầu đối tượng để strComputer biến có chứa xâu, dấu chấm ký hiệu tham chiếu tới máy cục dùng điểm bắt đầu namespace WMI Vậy không gian tên WMI gì? Thực ra, tập hợp phân cấp lớp đối tượng khác nhau, dùng để quản lý nhiều mặt khác máy tính Windows Ví dụ, có namespace gốc bên hàng tá namespace khác SECURITY, CIMV2, perfmon… Hầu hết lớp WMI hữu ích nằm không gian tên root\cimv2 trước làm việc với lớp số đó, cần diễn giải chúng thành đối tượng Sau xem xét thuộc tính đối tượng gọi phương thức để thao tác chúng Lớp, đối tượng, thuộc tính, phương thức - chúng gì? Dưới phân tích đơn giản giúp bạn hiểu chúng: xem xét lớp MicrowaveOven, tức tập hợp trừu tượng tất lị vi sóng (khơng có lị thực đưa vào cả) Lớp có thuộc tính: màu sắc (Color), kích thước theo khối lập phương (CubicInches), mặt quay trịn (HasTurntable)… Có lẽ bạn hiểu thuộc tính đặc điểm, tính chất đặc trưng cho lớp Nói cách khác, lị vi sóng có màu đó, có kích thước bên chúng quay trịn khơng Lớp MicrowaveOven có phương thức Phương thức, tức hàm tính tốn định nghĩa theo quy luật định để lớp thao tác bạn thao tác với lớp Với lớp cụ thể này, số phương thức dùng SetCookingTime (thiết lập thời gian nấu), SetPowerLevel (thiết lập mức điện sử dụng), Reset (nấu lại)… Thông thường, để gọi phương thức bạn phải đưa tham số vào cho Ví dụ, để gọi phương thức SetCookingTime (thiết lập thời gian nấu), định nghĩa biến CookingTime (thời gian nấu) số giây định sau đưa biến vào phương thức SetCookingTime thiết lập cho trường hợp cụ thể lớp (một trường hợp thực, lị vi sóng lớp trừu tượng) Với WMI VBScript, thực sau: intCookingTime = 120 errSetCookingTime = objMicrowave.SetCookingTime(intCookingTime) Nhưng đối tượng lò vi sóng (objMicrowave) đâu ra? Chúng ta chưa tạo nó, tạo cách dùng lệnh Set phương thức CreateObject: Set objMicrowave = CreateObject("MicrowaveOven") Thực ra, xét kỹ objMicrowave khơng phải đối tượng lớp MicrowaveOven Chính xác đối tượng tham chiếu tới thể lớp MicrowaveOven Nhưng bắt đầu với nên khía cạnh sâu tìm hiểu sau Tiếp theo, tạo thêm biến strColor để thiết lập thuộc tính màu sắc cho lị vi sóng Đặt giá trị biến Green (màu xanh cây), script có dạng bên (với số thích bên cạnh): strColor = "Green" 'gán màu cho lị vi sóng intCookingTime = 120 'quy định thời gian nấu (tính theo giây) Set objMicrowave = CreateObject("MicrowaveOven") 'tạo thể đối tượng errSetCookingTime = objMicrowave.SetCookingTime(intCookingTime) 'gọi phương thức để ‘thiết lập thời gian nấu ghi lại đoạn mã lỗi kết objMicrowave.Color = strColor 'thiết lập giá trị thuộc tính Color (màu sắc) Cũng khơng q khó phải khơng bạn! Trở lại với script Muốn truy cập thiết lập cấu hình TCP/IP máy dùng WMI, bạn cần viết mã: Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Lệnh kết nối bạn tới namespace root\cimv2 máy cục cách định nghĩa đối tượng có tên objWMIService thiết lập với giá trị trả phương thức GetObject Sau kết nối tới namespace này, bạn thu thập thơng tin bên dưới: Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")") Dòng lệnh chạy nào? Đầu tiên, bạn thấy đối tượng có tên objWMIService mà vừa mơ tả phút trước dịng bên Sau đối tượng ExecQuery, thuộc tính mà phương thức (cấu trúc lệnh ln ln doituong.thuoctinh doituong.phuongthuc) Chúng ta dễ dàng đốn phương thức đằng sau câu truy vấn Phương thức ExecQuery gọi cách thêm tham số vào Tham số lệnh SQL (SELECT), trả tập hợp (được đánh dấu tiền tố “col-”) tất (dấu hoa thị) cấu hình điều hợp mạng máy có đường bao TCP/IP cho phép điều hợp Tập hợp trả sau thực phương thức gán với biến colNetAdapters Chúng ta làm với tập hợp này? Khi có tập hợp tay, bạn phải lặp vịng nó, dùng lệnh lặp For Each Vòng lặp này: For Each objNetAdapter in colNetAdapters ' something to each network adapter's configuration Next Bạn phải lặp vịng tập hợp cho dù tập hợp có đối tượng Bây giờ, điều thực muốn thay đổi địa IP cho adapter Vì thế, định nghĩa thêm số biến: arrIPAddress = Array("172.16.11.99") arrSubnetMask = Array("255.255.255.0") Chú ý biến định nghĩa địa IP subnet mask phải biến mảng Tại lại thế? Lý máy tính Windows nhiều khơng phải có địa IP, cổng vào mặc định… Vậy khơng dùng biến mảng cho tất thiết lập IP quán Và lý thứ hai, tìm kiếm lớp Win32_NetworkAdapterConfiguration WMI Reference MSDN, bạn thấy phải dùng đến biến mảng Chúng ta nghiên cứu sâu WMI Reference tương lai, cịn tạm thời chấp nhận mức độ chưa rõ ràng chút Cuối cùng, cần gọi phương thức EnableStatic lớp Win32_NetworkAdapterConfiguration để thay đổi địa IP cổng vào mặc định điều hợp mạng sang thiết lập định nghĩa biến mảng Thực sau: errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask) Ở đây, biến err- cần thiết, giống nơi lưu trữ đoạn mã lỗi trả phương thức chạy Mang tất lại với Bây giờ, ghép tất phần lại với xem có gì: strComputer = "." arrIPAddress = Array("172.16.11.99") arrSubnetMask = Array("255.255.255.0") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For Each objNetAdapter in colNetAdapters errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask) Next Bạn biết đấy, đoạn mã đưa định nghĩa biến, điều khiển lỗi, dùng liệu đầu vào kiểm chứng kết trả Chúng ta sử dụng lại đoạn mã phần sau loạt bài, xem liệu có làm việc hay khơng Ghi script lại với tên ChangeIPAddress.vbs (nhớ phải tắt Word Wrap Notepad) copy lên desktop máy chủ có địa tĩnh 172.16.11.45 Sau đó, mở cửa sổ dòng lệnh Command Promp với vai trò người dùng Administrator, chuyển tới thư mục Desktop chạy script, dùng Cscript.exe Kết trả về: C:\Documents and Settings\Administrator\Desktop>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix : IP Address : 172.16.11.45 Subnet Mask : 255.255.255.0 Default Gateway : 172.16.11.1 C:\Documents and Settings\Administrator.DC-1\Desktop>cscript ChangeIPAddress.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved C:\Documents and Settings\Administrator\Desktop>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix : IP Address : 172.16.11.99 Subnet Mask : 255.255.255.0 Default Gateway : 172.16.11.1 Vâng, làm việc! Địa IP máy thay đổi thành công từ 45 thành 99 hiển thị lệnh Ipconfig thứ hai Còn nhiều điều thú vị Windows scripting, xin hẹn bạn phần hai Và xin tạm biệt! ... Windows scripting, số công cụ trợ giúp hữu ích tương lai Các thiết lập TCP/IP scripting Hầu admin dùng Visual Basic Script (VBScript) để viết kịch quản trị Windows (Windows admin script) VBScript...cạnh sâu xa viết dùng script mạng Windows Mục đích cuối mà hướng tới kể người bắt đầu tìm hiểu bạn, tơi script hố tự động cơng việc, để sống admin an nhàn Chúng ta thực điều script bạn viết download... Help quay trở lại cách thứ Nhưng mục đích học script Do đó, xem xét cách thay đổi địa IP máy dùng VBScript WMI mà trước hết phải biết đến số khái niệm đối tượng (object), phương thức (method),