Quản Trị Mạng - Trong bài viết dưới đây, chúng tôi sẽ giới thiệu và hướng dẫn các bạn một vài bước cơ bản để tự tạo ứng dụng kiểm tra tình trạng hệ thống với Windows Script và LiveGraph. Yêu cầu của chương trình là hiển thị đầy đủ thông tin, dữ liệu được hiển thị từ trái sang phải trên giao diện đồ họa, liệt kê toàn bộ chi tiết về mức độ sử dụng của hệ thống mạng, CPU, công suất nguồn, dung lượng ổ cứng đã sử dụng và còn trống... Nhưng vấn đề tồn tại ở đây là ứng dụng hiển thị quá nhiều thông tin nhỏ và không liên quan với nhau nhiều lắm. Ví dụ như chúng ta chỉ muốn theo dõi tình hình hoạt động của Network và không muốn để ý thêm vào những thành phần khác, liệu có thể tự điều chỉnh, thay đổi thiết lập của ứng dụng dựa vào Windows Script hay không?
Phân tích:
Thực tế, để tạo được ứng dụng với chức năng như vậy thì các bạn cần phải trải qua 2 bước, và cũng không yêu cầu quá nhiều kiến thức chuyên sâu về lập trình như mọi người thường nghĩ. Một khi đã nắm rõ cách thức về quá trình thu thập dữ liệu về máy tính (hoặc bất cứ máy client nào trong hệ thống mạng) bằng Windows Script, thì chúng ta hoàn toàn có thể thay đổi thông tin hiển thị theo ý muốn.
Đoạn script dưới đây sẽ thực hiện chức năng truy vấn về mức độ hoạt động của CPU tính theo tỉ lệ % trong hệ thống:
<script type="text/javascript" language="VBScript">// <![CDATA[ Option Explicit On Error Resume Next Dim oFSO, sFile1, oFile1, sFile2, oFile2, sFile3, oFile3, sText Dim colResults, objResult, strQuery Dim strResults Dim x Set Shell = wscript.createObject("wscript.shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sFile1 = "CPULoad.csv" sFile2 = "DriveSpace.csv" sFile3 = "BatteryStatus.csv" '***Open New File to write CPU Load*** Set oFile1 = oFSO.CreateTextFile(sFile1, 1) 'Define the WMI query strQuery = "SELECT * FROM Win32_Processor" ' Run the query Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery ) 'Identify the CPU load For Each objResult In colResults strResults = CStr(objResult.LoadPercentage) Next oFile1.WriteLine strResults oFile1.Close Set oFile1 = Nothing set colResults = Nothing strResults = ""
Điểm mấu chốt của đoạn mã này là thông tin tìm kiếm có liên quan tới Win32_Processor và dòng objResult.LoadPercentage – được dùng để xuất dữ liệu về mức CPU hoạt động từ kết quả trả về. Và sau đó, lượng thông tin, dữ liệu này sẽ được ghi vào file csv.
Tiếp theo, chúng ta cần phải tạo vòng lặp để tiếp tục tìm hiểu về mức độ hoạt động của hệ thống và cập nhật dữ liệu vào file csv. Đoạn mã của vòng lặp đó sẽ dựa trên cấu trúc như bên dưới:
'***Write New CPU Load every 5 seconds*** For x = 1 to 50 WScript.Sleep 5000 '***Update CPU Load File*** Set oFile1 = oFSO.OpenTextFile(sFile1,8,1) 'Define the WMI query strQuery = "SELECT * FROM Win32_Processor" ' Run the query Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery ) 'Identify the CPU load For Each objResult In colResults strResults = CStr(objResult.LoadPercentage) Next oFile1.WriteLine strResults oFile1.Close Set oFile1 = Nothing set colResults = Nothing strResults = "" Next
Vòng lặp này sẽ hoạt động 50 lần, thời gian dừng giữa mỗi lần thực hiện lệnh truy vấn tới hệ thống và cập nhật dữ liệu file csv là 5 giây. Mặt khác, các bạn có thể tự thay đổi thành vòng lặp vô hạn và thiết lập chế độ hoạt động ngầm, còn trong bài thử nghiệm này, chúng tôi chỉ cho phép ứng dụng hoạt động liên tiếp trong vòng 4 phút. Và đây là kết quả tạm thời tại bước này:
Với mô hình hoạt động tương tự như vậy, các bạn có thể yên tâm về máy tính cũng như toàn bộ tình hình xảy ra trong hệ thống dựa vào giao diện đồ họa, dữ liệu luôn được cập nhật trong file csv. Để biết thêm về các class cung cấp thông tin trong Windows, các bạn hãy tham khảo tại đây. Nhưng ứng dụng thực tế mang lại nhiều hiệu quả và chức năng hơn là LiveGraph - một công cụ trực tuyến dưới dạng mã nguồn mở, với chức năng chính là thu thập thông tin, dữ liệu trong hệ thống, sau đó tạo ra file csv để lưu kết quả, đồng thời hiển thị lượng dữ liệu trên dưới dạng biểu đồ liên tục cập nhật.
Điều cần chú ý khi sử dụng LiveGraph là người dùng cần xác định rõ những thông tin nào cần truy vấn qua file csv, thiết lập khoảng thời gian kiểm tra và cập nhật file dữ liệu:
Và đây là giao diện của LiveGraph sau khi đoạn mã Windows Script trên hoạt động được khoảng 2 phút, LiveGraph cập nhật tự động và lưu dữ liệu, tất cả được biểu diễn dưới dạng biểu đồ như hình dưới:
Bên cạnh đó, các bạn có thể thay đổi, tùy biến hoặc thêm bớt các thành phần khác nhau. Ví dụ như dưới đây, tác giả đã thêm chức năng tìm kiếm thông tin về mức sử dụng pin hiện tại trên laptop:
'***Open New File to write Battery Level*** Set oFile3 = oFSO.CreateTextFile(sFile3, 1) 'Define the WMI query strQuery = "SELECT * FROM Win32_Battery" ' Run the query Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery ) 'Identify the Battery Level For Each objResult In colResults strResults = CStr(objResult.EstimatedChargeRemaining) Next oFile3.WriteLine strResults oFile3.Close Set oFile3 = Nothing set colResults = Nothing strResults = ""
Và một số tùy chọn khác dựa theo nhu cầu của người dùng:
Khá đơn giản và dễ dàng, chúc các bạn thành công!