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