Giáo trình Quản trị hệ thống WebServer và MailServer - Nghề: Quản trị mạng
1.1. Scripts và Network Scripting
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 cá, bạn nuôi
được anh ta một ngày; nhưng nếu dạy cho anh ta cách câu cá, bạn nuôi anh ta cả
đời”.
Còn gì đúng hơn thế, và càng đúng hơn trong thế giới bận rộn của các chuyên gia công
nghệ thông tin (mà chúng ta vẫn quen miệng gọi là dân IT) khi làm việc với kỹ thuật
scripting: “Đưa cho một admin một script, bạn giúp anh ta giải quyết một vấn đề;
nhưng nếu dạy anh ta cách viết script như thế nào, bạn giúp anh ta làm được công
việc gắn liền với cả đời anh ta”.
Giá mà tự động hoá đƣợc công việc quản trị hàng ngày bằng các script, cuộc sống của
những admin sẽ thoải mái và nhẹ nhàng hơn nhiều. Tại sao cần phải biết và dùng
script? Không phải đã có hàng trăm script đƣợc viết sẵn trôi nổi trên thế giới mạng mà
bạn có thể tải về dùng một cách dễ dàng, nhƣ lấy từ nguồn trung tâm Script Center
Script Repository của Microsoft chẳng hạn. Vậy tại sao? Hàng trăm kịch bản (script)
viết sẵn, xin thƣa rằng đúng. Tải về dùng dễ dàng, xin thƣa rằng lại càng đúng. Ấy vậy
mà đúng nhƣng chƣa đủ. Chúng hữu ích và giúp đỡ bạn rất nhiều, nhƣng nhiều khi đòi
hỏi riêng theo cấu hình cụ thể trong môi trƣờng của bạn lại làm khó chúng. Có khi
trong hàng trăm hàng nghìn script tải về bạn chỉ chọn lọc đƣợc một script phù hợp mà
vẫn phải điều chỉnh đôi chút. Đơn giản vì tác giả viết ra nó không nằm trong tổ chức
của bạn, không thực hiện theo cấu hình của bạn và mối quan tâm của họ lại hƣớng đến
một cái gì khác cơ. Khi đó các admin phải trở thành những ông thợ sửa chữa lành
nghề, thay đổi chỗ này một chút, thay đổi chỗ kia một tý, ghép ghép nối nối để biến
vài scrip nhỏ lẻ thành một script hợp nhất lớn hơn hay dùng dữ liệu đầu ra của script
này làm thành dữ liệu đầu vào cho script khác, hay biến nó thành công cụ hoạt động
cho một máy từ xa Quả là rất nhiều việc!
Anh thợ máy muốn sửa chữa đƣợc máy móc thì phải hiểu cấu trúc của nó, đó là điều
không ai phản bác. Bởi vậy mà anh “thợ” admin muốn biến đổi, điều chỉnh script thì
phải hiểu về nó, phải biết cách xây dựng và viết ra nó, biến những cái mới hay cái có
sẵn thành cái của riêng mình, phù hợp nhất với mình. Và lúc đó ngƣời ta gọi anh là
“thợ lành nghề”. Muốn đƣợc nhƣ vậy, ai cũng phải bắt đầu với những điều cơ bản
nhất, ở đây là Windows scripting. Nói đến script, nhiều ngƣời tƣởng chừng rất khó,
thực sự khó vì trƣớc hết script rất khó dịch sang tiếng Việt! Script nghĩa là “kịch
bản”, nhƣng dân công nghệ chúng ta đâu phải là ngƣời làm phim nên kịch bản của thế2
giới IT chỉ toàn những đoạn mã loằng ngoằng mà chỉ có các chuyên gia mới hiểu, còn
nhiều ngƣời “thƣờng thƣờng bậc trung” nhƣ sinh viên công nghệ thì chịu! Chính bởi
vậy mà hôm nay chúng ta sẽ bắt đầu từ những cái cơ bản nhất, sau đó nâng cao dần
khả năng hiểu những khía cạnh sâu xa hơn trong viết và dùng script ở các mạng
Windows. Mục đích cuối cùng mà chúng ta hƣớng tới là kể cả những ngƣời mới bắt
đầu tìm hiểu nhƣ bạn, nhƣ tôi đều có thể script hoá tự động công việc, để cuộc sống
của các admin an nhàn hơn. Chúng ta sẽ thực hiện điều này trên cả script do chính bạn
viết ra hoặc download về từ nhiều nguồn khác nhau. Chúng ta cũng sẽ đƣợc biết một
số tài nguyên liên quan đáng tìm hiểu để có cái nhìn sâu sắc hơn về Windows
scripting, cũng nhƣ một số công cụ trợ giúp có thể sẽ rất hữu ích trong tƣơng lai.

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Quản trị hệ thống WebServer và MailServer - Nghề: Quản trị mạng
ằ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:
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
70
Ping = False
wscript.echo strIPtext & " is not pingable"
End If
Next
Set colPingResults = Nothing
WScript.Quit
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.
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.
71
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("") =
"smtp.gmail.com"
emailConfig.Fields(""
) = 465
emailConfig.Fields("") = 2
emailConfig.Fields("
e") = 1
emailConfig.Fields("") =
true
emailConfig.Fields("")
= fromEmail
emailConfig.Fields("")
= password
emailConfig.Fields.Update
emailObj.Send
Set emailobj = nothing
Set emailConfig = nothing
WScript.Quit
72
Đ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:
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ị.
4.2. Truy vấn cho quản trị viên cục bộ bằng WMIC
wmic process
73
Phần đầu ra của lệnh này có vẻ khá khó đọc vì định không đƣợc chỉ định. Tuy nhiên
với WMIC, đầu ra mà công cụ này cung cấp đƣợc định dạng hoàn toàn khác, trong đó
phần “list full” sẽ hiển thị các thông tin chi tiết cho mỗi lĩnh vực mà ngƣời dùng quan
tâm, còn phần “list brief” sẽ cung cấp một dòng đầu ra cho mỗi một mục báo cáo dƣới
sạng danh sách các mục, chẳng hạn nhƣ các quá trình đang chạy, các chƣơng trình tự
động khởi chạy và những chia sẻ hiện hữu.
Ví dụ, chúng ta có thể quan sát mọi quá trình đang chạy trên máy tính bằng cách chạy
lệnh:
wmic process list brief
74
Lệnh trên sẽ hiển thị tên, ID của quá trình và quyền ƣu tiên của mỗi quá trình đang
chạy cũng nhƣ các thuộc tính khác.(giống khi bạn chạy task manager vậy)
Để nhận thêm các thông tin chi tiết hơn, chạy lệnh:
wmic process list full
Lệnh này sẽ hiển thị tất cả các thông tin chi tiết, gồm có đƣờng dẫn của file thực thi có
liên kết với quá trình và lệnh triệu gọi dòng lệnh của nó. Khi nghiên cứu một máy tính
có bị tiêm nhiễm hay không, quản trị viên cần phải xem xét từng quá trình để xác định
75
xem các quá trình này có hợp lệ trên máy tính hay không, sau đó nghiên cứu các quá
trình lạ hoặc không mong đợi bằng cách sử dụng các cỗ máy tìm kiếm.
Ngoài các alias về các quá trình, ngƣời dùng có thể thay thế startup để nhận danh sách
các chƣơng trình tự động khởi chạy trên máy tính, gồm có các chƣơng trình khởi chạy
khi hệ thống khởi động hoặc ngƣời dùng đăng nhập, đây là những chƣơng trình đƣợc
định nghĩa bởi một auto-start registry key hoặc thƣ mục:
wmic startup list full
Rất nhiều malware có thể tự động chạy trên máy tính bằng cách thêm một mục auto-
start bên cạnh các mục hợp lệ khác có bên trong các công cụ antivirus hay các chƣơng
trình system tray. Ngƣời dùng có thể quan sát các thiết lập khác trên máy tính với
WMIC bằng cách thay thế “startup” bằng “QFE” (cụm chữ cái viết tắt cho Quick Fix
Engineering) để thấy đƣợc mức vá của một hệ thống, bằng “share” để xem danh sách
76
các file chia sẻ trên Windows hoặc bằng “useraccount” để thấy đƣợc các thiết lập tài
khoản chi tiết của ngƣời dùng.
Một tùy chọn khác bên trong WMIC là khả năng chạy một lệnh để thu thập thông tin
trên trên một chu kỳ nào đó bằng cách sử dụng cú pháp “/every:[N]” sau phần còn lại
của lệnh WMIC. [N] ở đây là một số nguyên, chỉ thị rằng WMIC sẽ chạy lệnh trên cứ
[N] giây một lần. Bằng cách đó, ngƣời dùng có thể tìm kiếm các thay đổi trong các
thiết lập của hệ thống theo thời gian, cho phép khảo sát một cách kỹ lƣỡng đầu ra. Sử
dụng chức năng này để kéo toàn bộ các thông tin về quá trình trong 5 giây một lần,
ngƣời dùng có thể chạy:
C:\> wmic process list brief /every:5
(Nguồn tham khảo : quantrimang.com)
II.Sử dụng Wmic để check thông tin máy tính
baseboard
get Manufacturer, Model, Name, PartNumber, slotlayout,
serialnumber, poweredon
bios get name, version, serialnumber
77
bootconfig get BootDirectory, Caption, TempDirectory, Lastdrive
cdrom get Name, Drive, Volumename
(Máy mình không có ổ CD-ROM (Lenovo T460) nên nó báo vậy nhé )
computersystem
get Name, domain, Manufacturer, Model, NumberofProcessors,
PrimaryOwnerName,Username, Roles, totalphysicalmemory
/format:list
78
cpu get Name, Caption, MaxClockSpeed, DeviceID, status
datafile
where name=‟c:\\boot.ini‟ get Archive, FileSize, FileType,
InstallDate, Readable, Writeable, System, Version
(NOTE: \\ chứ không \ không nhé – mình test với LENOVO T460 thì dù chạy
quyền administrator nhƣng nếu để đƣờng dẫn là \ không sẽ báo lỗi Invalid query )
dcomapp get Name, AppID /format:list
79
desktop
get Name, ScreenSaverExecutable, ScreenSaverActive,
Wallpaper /format:list
desktopmonitor get screenheight, screenwidth
(Không work trên win10 – mình test thấy vậy – TRÊN WIN 10 mình dùng lệnh
80
PATH
WIN32_VIDEOCONTROLL
ER
get
CurrentHorizontalResolution,CurrentVerticalResol
ution
diskdrive
get Name, Manufacturer, Model, InterfaceType, MediaLoaded,
MediaType
diskquota get User, Warninglimit, DiskSpaceUsed, QuotaVolume
environment get Description, VariableValue
81
fsdir
where name=‟c:\windows‟ get Archive, CreationDate,
LastModified, Readable, Writeable, System, Hidden, Status
Nhƣ ví dụ trên file 2016_July đƣợc tạo vào 18:34:55 ngày 22 Aug 2016 GMT+7
group get Caption, InstallDate, LocalAccount, Domain, SID, Status
82
idecontroller get Name, Manufacturer, DeviceID, Status
irq get Name, Status
83
IRQ (Interupt request) – trong hệ điều hành , mỗi thiết bị trong máy tính đƣợc gán 1
giá trị IRQ – ví dụ trong trƣờng hợp card âm thanh và card mạng có cùng giá trị IRQ
thì khi sử dụng kết nối Internet , sound buffer sẽ không thể update dẫn tới việc đoạn
nhạc sẽ bị phát đi phát lại hoặc nhiều trƣờng hợp các thiết bị có cùng giá trị IRQ dẫn
tới màn hình xanh (BSOD)
Các bạn có thể xem IRQ bằng giao diện GUI
Run->devmgmt.msc -> View -> Resource by types -> Interrup request (IRQ)
loadorder get Name, DriverEnabled, GroupOrder, Status
84
logicaldisk
get Name, Compressed, Description, DriveType, FileSystem,
FreeSpace, SupportsDiskQuotas, VolumeDirty, VolumeName
memphysical
get Manufacturer, Model, SerialNumber, MaxCapacity,
MemoryDevices
(LAPTOP này tối đa 2 khe RAM và hỗ trợ max 16GB Ram)
netclient get Caption, Name, Manufacturer, Status
85
netlogin
get Name, Fullname, ScriptPath, Profile, UserID,
NumberOfLogons, PasswordAge, LogonServer, HomeDirectory,
PrimaryGroupID
netprotocol
get Caption, Description, GuaranteesSequencing,
SupportsBroadcasting, SupportsEncryption, Status
nic
get AdapterType, AutoSense, Name, Installed, MACAddress,
PNPDeviceID,PowerManagementSupported, Speed, StatusInfo
86
nicconfig
get MACAddress, DefaultIPGateway, IPAddress, IPSubnet,
DNSHostName, DNSDomain
nicconfig
get MACAddress, IPAddress, DHCPEnabled,
DHCPLeaseExpires, DHCPLeaseObtained, DHCPServer
nicconfig get MACAddress, IPAddress, DNSHostName, DNSDomain,
DNSDomainSuffixSearchOrder,
87
DNSEnabledForWINSResolution, DNSServerSearchOrder
ntdomain
get Caption, ClientSiteName, DomainControllerAddress,
DomainControllerName, Roles, Status
os
get Version, Caption, CountryCode, CSName, Description,
InstallDate, SerialNumber, ServicePackMajorVersion,
WindowsDirectory /format:list
88
os
get CurrentTimeZone, FreePhysicalMemory,
FreeVirtualMemory, LastBootUpTime, NumberofProcesses,
NumberofUsers, Organization, RegisteredUser, Status
pagefile get Caption, CurrentUsage, Status, TempPageFile
partition get Caption, Size, PrimaryPartition, Status, Type
printer get DeviceID, DriverName, Hidden, Name, PortName,
PowerManagementSupported, PrintJobDataType,
89
VerticalResolution, Horizontalresolution
process
get Caption, CommandLine, Handle, HandleCount, PageFaults,
PageFileUsage, PArentProcessId, ProcessId, ThreadCount
product get Description, InstallDate, Name, Vendor, Version
90
List danh sách phần mềm đƣợc cài đặt trong máy
recoveros
get AutoReboot, DebugFilePath, WriteDebugInfo,
WriteToSystemLog
Registry get CurrentSize, MaximumSize, ProposedSize, Status
91
scsicontroller get Caption, DeviceID, Manufacturer, PNPDeviceID
server
get ErrorsAccessPermissions, ErrorsGrantedAccess,
ErrorsLogon, ErrorsSystem, FilesOpen, FileDirectorySearches
service get Name, Caption, State, ServiceType, StartMode, pathname
92
share get name, path, status
sounddev get Caption, DeviceID, PNPDeviceID, Manufacturer, status
startup get Caption, Location, Command
93
sysaccount get Caption, Domain, Name, SID, SIDType, Status
sysdriver get Caption, Name, PathName, ServiceType, State, Status
94
systemslot
get Number, SlotDesignation, Status, SupportsHotPlug, Version,
CurrentUsage, ConnectorPinout
tapedrive
get Name, Capabilities, Compression, Description, MediaType,
NeedsCleaning, Status, StatusInfo
Không có tapedrive
timezone get Caption, Bias, DaylightBias, DaylightName, StandardName
95
useraccount
get AccountType, Description, Domain, Disabled,
LocalAccount, Lockout, PasswordChangeable,
PasswordExpires, PasswordRequired, SID
Để thực thi các lệnh này tại máy remote ( yêu cầu có quyên admin domain) :
wmic /node:(remotePC) [command] [optional] .
wmic /node:VNTEST01 process list all
Để xuất ra file excel thì các bạn chèn thêm đoạn /format:csv > filename.csv
wmic /node:@computers.txt product get name,version /format:csv > 30Aug.csv
Trên đây mình đã list các lệnh sử dụng với wmic , các bạn có thể tự build 1 file .batch
để sử dụng trong quá trình làm việc .
4.4. Sử dụng WMIC tƣơng tác
WMIC viết tắt của Windows Management Instrumentation Command-line .
Vậy để hiểu WMIC là gì thì trƣớc hết chúng ta phải hiểu Windows Management
Instrumentation (WMI) là gì đã phải không ?
96
WMI ra đời từ thời kỳ của Windows 98 hoặc sớm hơn. Trƣớc đây nó đƣợc gọi
với cái tên khác Web-Based Enterprise Management (WBEM), tức Công cụ quản lý
doanh nghiệp dựa trên nền tảng Web. WBEM là công nghệ hợp tác phát triển bởi
Microsoft, Cisco, Intel, Compaq và BMC Software nhằm hỗ trợ quản lý các hệ thống
máy chủ và máy để bàn trong môi trƣờng doanh nghiệp. WMI cung cấp mô hình thể
hiện, lƣu trữ và truy vấn cấu hình, thông tin trạng thái hay nhiều khía cạnh hoạt động
khác của các máy Windows. Các nhà phát triển có thể dùng WMI để viết script hoặc
quản lý mã nguồn để xem hay chỉnh sửa các thiết lập cấu hình trên máy Windows,
xem trạng thái của các ứng dụng, dịch vụ Windows và thực hiện toàn bộ nhiều công
việc hữu ích khác của một quản trị viên nhƣ triển khai, bảo trì, gỡ lỗi các mạng
Windows.
Nói cách khác, nói tới WMI tức là nói tới:
Hệ điều hành Windows: làm việc trên môi trƣờng Windows và cho các máy chạy
Microsoft Windows.
Management: có thể đƣợc dùng để quản lý các máy tính này.
Instrumentation: cung cấp nhiều công cụ để xem và chỉnh sửa những thứ chạy bên
trong các máy tính này.
Bạn có thể ví máy tính Windows giống nhƣ một chiếc xe ô tô và WMI giống nhƣ
nguồn điện hay các thiết bị điện cho phép bảng đo đồng hồ hiển thị tốc độ, nhiệt độ
động cơ, RPM của ô tô.
Windows tích hợp tất cả công cụ dựng sẵn này qua WMI. Bạn chỉ cần biết cách làm
sao lấy chúng ra để thực hiện những điều mình muốn nhƣ thay đổi địa chỉ IP, xem múi
giờ, khởi động lại máy từ xa, hiển thị danh sách các bản vá đã đƣợc cài đặt
WMIC sẽ sử dụng WMI qua cửa sổ Command-Line để lấy các thông số của máy tính
lên cho chúng ta và xuất ra cửa sổ command-line hoặc xuất ra file excel (.csv)
WMIC cho phép quản lý ngƣời dùng truy cập các thông tin chi tiết trên máy tính
Windows, gồm có các thuộc tính chi tiết của hàng ngàn các thiết lập và đối tƣợng.
4.4. Sử dụng WMIC trong các file Batch
97
Tập tin Batch (.bat) là cách để thực thi các công việc trên máy tính một cách tự
động. Bạn có thể tự động hóa các tác vụ hàng ngày, rút ngắn thời gian cần thiết khi
làm việc nào đó, và biến một quá trình phức tạp thành điều gì đó mà bất cứ ai cũng có
thể làm đƣợc. Từ khi chƣơng trình nhƣ AutoHotkey ra đời, nhiều ngƣời đã không
muốn mất thời gian để viết hay tìm hiểu về tập tin .bat, thậm chí họ không biết những
gì mà nó có thể làm. Nhƣng lợi ích mà những tập tin .bat mang lại thì vẫn rất to lớn.
Giả sử bạn thƣờng xuyên gặp các vấn đề về mạng, và luôn phải mở hộp thoại
command prompt để nhập vào các lệnh nhƣ ipconfig /release, /renew hay cần xóa file
tạm %temp% Trong khi đó, chỉ cần một file BAT đơn giản sẽ giúp công việc này
hiệu quả hơn, bạn còn có thể dùng file này cho tất cả các máy tính khác nếu muốn.
98
Có rất nhiều ứng dụng của .bat file tùy theo nhu cầu và sáng tạo của mỗi quản trị viên.
Có rất nhiều batch file đƣợc viết dựa trên Wmic.
1
File đính kèm:
giao_trinh_quan_tri_he_thong_webserver_va_mailserver_nghe_qu.pdf

