Một số thủ thuật trong Windows Scripting

Quản Trị Mạng - Cho dù bạn là một người làm việc trong lĩnh vực IT, chẳng hạn như một nhà thiết kế web, hoặc một nhân viên văn phòng, thậm chí là một sinh viên thì đều cần đến Windows Scripting bởi nó sẽ cung cấp cho bạn rất nhiều tiện ích. Đối với người dùng Mac, họ có thể sử dụng AppleScript là giải pháp hàng đầu, còn ở đây chúng tôi sẽ hướng dẫn người dùng Windows cách sử dụng Windows Scripting trong công việc của mình, và hãy đọc bài viết sau để xem nó có khả năng gì.

Bản thân Windows Scripting (WSF) là một tập tin bao gồm nhiều đoạn code và được lưu dưới dạng .wsf. Windows sẽ biên dịch và chạy trực tiếp tập tin này.

Windows Scripting thực sự mạnh mẽ hơn nhiều so với batch jobs mà các chuyên gia IT thường viết kịch bản và chạy trong nhiều năm qua. WSF cung cấp cho người dùng sức mạnh của một ngôn ngữ có cấu trúc giống như Visual Basic. Theo mặc định, bạn có thể tạo ra một VBScript hoặc file JScript WSF trên Windows và chúng đều được chạy tốt.

Trong bài viết này, chúng tôi sẽ giới thiệu tới các bạn ba công cụ điển hình mà mọi người thường dùng trong môi trường CNTT chuyên nghiệp cũng như ở nhà. Ba công cụ này bao gồm: tiếp nhận dữ liệu đầu vào từ file văn bản; ping các thiết bị khác nhau trên mạng của bạn; và gửi email thông qua kịch bản đã có sẵn.

Sức mạnh của Windows Scripting

Từ các thành phần script nhỏ lẻ bạn hoàn toàn có thể kết hợp chúng lại thành một file lớn tổng hợp để thực hiện lần lượt các tác vụ chỉ bằng một cú klick chuột. Chẳng hạn như sau bài viết này bạn có thể: lấy một danh sách IP từ đầu vào là file văn bản, ping đến các thiết bị đó và cuối cùng là gửi một email thông báo về bất kỳ thiết bị nào.

Tiếp nhận và đọc tập tin đầu vào

Bước đầu tiên của tiến trình này chúng ta sẽ học cách làm thế nào để đọc và xử lý thông tin từ một đầu vào là tập tin văn bản. Ở đây chúng ta tạo file có tên IPlist.ini (với định dạng .txt vẫn chạy bình thường nhưng chúng tôi không chắc chắn về những sự cố có thể xảy ra) nằm trong cùng thư mục với script. Nội dung tập tin này chứa một danh sách toàn bộ địa chỉ IP cần được kiểm tra. Để có thể đọc từng dòng của file văn bản này, chúng ta sử dụng script sau:

<job>
<script language="VBScript">
Option Explicit
On Error Resume Next

Dim strHost
Dim strCommand
Dim ReturnCode
Dim strLine
Dim oFSO, sFile, oFile, sText

Set Shell = wscript.createObject("wscript.shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
sFile = "c:\users\owner\scripts\IPlist.ini"
If oFSO.FileExists(sFile) Then
Set oFile = oFSO.OpenTextFile(sFile, 1)
Do While Not oFile.AtEndOfStream
sText = oFile.ReadLine
If Trim(sText) <> "" Then
strCommand = sText
wscript.echo "IP Address is: " & sText
End If
Loop
oFile.Close

Else
WScript.Echo "The file was not there."
End If
WScript.Quit
</script>
</job>

Đoạn code này sử dụng một đối tượng trong hệ thống tập tin Windows để mở file, sau đó đọc từng dòng một thời điểm cho đến cuối file.

Một số thủ thuật trong Windows Scripting

Trường hợp bạn đặt sai đường dẫn tập tin Iplist.ini sẽ hiển thị kết quả:

Một số thủ thuật trong Windows Scripting

Ping tới một Host

Sau khi đọc xong các địa chỉ IP của file gửi đến, bây giờ chúng ta tiến hành Ping tới chúng bằng Windows Scripting.

Quá trình Ping diễn ra phức tạp hơn so với việc đọc một file văn bản, bởi bạn cần sử dụng tới Windows Management Instrumentation scripting (WMI). Bạn nhập vào đoạn code sau:

<job>
<script language="VBScript">
Option Explicit
On Error Resume Next

Dim colPingResults, objPingResult, strQuery
Dim strIPtext
strIPtext = "192.168.1.105"

' WMI query
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & strIPtext & "'"

Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )

' Translate query results

For Each objPingResult In colPingResults
If Not IsObject( objPingResult ) Then
Ping = False
wscript.echo strIPtext & " is not pingable"
ElseIf objPingResult.StatusCode = 0 Then
Ping = True
wscript.echo strIPtext & " is pingable"
Else
Ping = False
wscript.echo strIPtext & " is not pingable"
End If
Next
Set colPingResults = Nothing
WScript.Quit
</script>
</job>

Sau khi chạy script trên, một cửa sổ pop-up hiện ra cho biết kết quả IP đó Ping được hay không.

Một số thủ thuật trong Windows Scripting

Trong đoạn code này chúng ta chỉ Ping tới một địa chỉ IP duy nhất, và việc bạn cần làm là nhúng lệnh Ping vào sau mỗi địa chỉ IP được đọc ra từ file văn bản, như vậy bạn sẽ Ping được toàn bộ địa chỉ trong danh sách.

Gửi một Email

Cuối cùng, khi bạn đã có một script để kiểm tra địa chỉ IP và cửa sổ pop-up sẽ bật lên nếu gặp bất kỳ lỗi nào. Nhưng nếu phải chạy các script này hàng ngày sẽ không phải điều thú vị cho phần lớn người dùng. Thay vào đó hãy thiết lập để các sự cố được tự động gửi tới email.

Để làm điều này bạn cần biết cách gửi emai thông qua script. Trên mạng Internet có rất nhiều cách có thể thực hiện, phổ biến nhất là sử dụng phương pháp CDO.

<job>
<script language="VBScript">
Option Explicit
On Error Resume Next

Const fromEmail = "rdxxxx@gmail.com"
Const password = "xxxxxxxx"

Dim emailObj, emailConfig
Set emailObj = CreateObject("CDO.Message")
emailObj.From = alert@topsecretwriters.com
emailObj.To = "rdxxxxx@gmail.com"
emailObj.Subject = "Test Email"
emailObj.TextBody = "It Works!!"

Set emailConfig = emailObj.Configuration
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = fromEmail
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = password
emailConfig.Fields.Update
emailObj.Send
Set emailobj = nothing
Set emailConfig = nothing
WScript.Quit

</script>
</job>

Đoạn script trên cho phép bạn gửi bất kỳ văn bản nào trong phần thân (body) của một email cho mọi địa chỉ sử dụng dịch vụ Gmail. Bạn có thể sửa đổi các tham số để sử dụng cho các máy chủ mail SMTP khác.

Bây giờ bạn tiến hành ghép các đoạn mã trên lại với nhau. Kết quả là script sẽ đọc địa chỉ IP, Ping tới từng địa chỉ và sau đó gửi một chuỗi thông báo trong phần body tới email:

Một số thủ thuật trong Windows Scripting

Việc tự động hóa công việc trong lĩnh vực IT sẽ dễ dàng hơn nếu biết tận dụng sức mạnh của Windows Scripting. Bất cứ lúc nào những script này sẽ tự động kiểm tra giúp bạn, đặc biệt là với hệ thống có vô số thiết bị.

Thứ Ba, 18/10/2011 06:00
52 👨 7.186
0 Bình luận
Sắp xếp theo
    ❖ Kiến thức cơ bản