Có thể các bạn đã biết hoặc chưa biết về lệnh ping, Lệnh Ping là một công cụ mạng phổ biến được sử dụng để kiểm tra kết nối giữa hai thiết bị trên mạng. Lệnh ping được biết đến với cái tên đầy đủ đó là Packet Internet Grouper. lệnh Ping gửi các gói tin ICMP (Internet Control Message Protocol) Echo Request tới một địa chỉ IP mục tiêu và chờ đợi phản hồi từ địa chỉ đó. Khi nhận được phản hồi, lệnh Ping sẽ hiển thị thời gian đi và về của gói tin, giúp người dùng xác định được trạng thái hoạt động và độ trễ của kết nối mạng. Công dụng chính của lệnh Ping bao gồm kiểm tra kết nối mạng, xác định sự cố mạng, đo lường độ trễ và kiểm tra sự tồn tại của một địa chỉ IP cụ thể trên mạng.
Nếu bạn không có thời gian để ngồi trước màn hình để kiểm tra nhưng muốn xác định được 2 địa chỉ IP có thông với nhau hoặc ping đến 1 trang web nào chẳng hạn, và ghi log lại thời gian nếu bị mất kết nối và có kết nối trở lại. Thì bài viết này dành cho bạn!
Hướng dẫn tạo file script
1. Tạo script PowerShell . Hoặc có thể tải về file mình làm sẵn tại đây.
- Mở Notepad hoặc một trình soạn thảo văn bản nào cũng được.
$Target = "google.com"
function Log {
param ([string]$message)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$date = Get-Date -Format "yyyy-MM-dd"
$LogFile = "C:\ping\ping_log_$date.txt" # Tạo file log theo ngày hiện tại
"${timestamp}: ${message}" | Out-File -Append -FilePath $LogFile
}
$previousState = $null
while ($true) {
try {
$pingResult = Test-Connection -ComputerName $Target -Count 1 -Quiet
$currentState = $pingResult
if ($previousState -ne $null -and $currentState -ne $previousState) {
if (-not $currentState) {
Log "Ping to $Target failed."
} else {
Log "Ping to $Target succeeded."
}
}
$previousState = $currentState
} catch {
Log "An error occurred: $_"
}
Start-Sleep -Seconds 5 # Chờ 5 giây trước khi ping lại
}
Sao chép và dán mã ở trên vào trình soạn thảo văn bản.
Lưu ý: chỉnh sửa lại 1 số chỗ trong code, như địa chỉ trang web hoặc địa chỉ IP cần ping. chỉnh sửa đường dẫn xuất file log theo của bạn.
2. Lưu file:
Lưu file và đặt tên : ping_check.ps1
(nhớ lưu file có đuôi .ps1)
3. Cấp quyền thực thi:
- Mở PowerShell với quyền admin (Windows PowerShell hoặc Windows Terminal với quyền admin). Dán câu lệnh sau và enter .
Set-ExecutionPolicy RemoteSigned
4. Kiểm tra chính sách hoạt động chưa:
Get-ExecutionPolicy
5. Điều hướng đến thưc mục chứa file script:
cd C:\ping
6. Chạy script:
.\ping_check.ps1
Lưu ý : không được tắt bảng này để nó chạy liên tục nhé!
Kết quả ta được như hình bên dưới, script sẽ chạy liên tục và ghi lại log khi có thay đổi trạng thái kết nối (mất kết nối hoặc có lại kết nối), kèm theo ngày và giờ hiện tại, và log sẽ được ghi vào file theo ngày.
Thiết lập Task Scheduler để chạy định kỳ
1. Mở Task Scheduler:
Nhấn Win + R, gõ taskschd.msc, và nhấn Enter.
2. Tạo một tác vụ mới:
Trong cửa sổ Task Scheduler, chọn Create Task… từ menu Actions.
Đặt tên trong phần Name.
Chọn Run with highest privileges.
3. Cấu hình tác vụ:
Trong tab Triggers, cấu hình thời gian để scrip có thể chạy, ví dụ Daily hoặc One time để kiểm tra hàng ngày hoặc một lần.
- Chọn tab
Actions
, nhấpNew...
. - Trong mục
Program/script
, nhậppowershell.exe
. - Trong mục
Add arguments (optional)
, nhập: -File “C:\ping\ping_check.ps1” - Nhớ thay đổi đường dẫn cho phù hợp với nơi bạn lưu file script.
Hoàn thành cấu hình và lưu tác vụ.
Với các bước trên, ta đã thiết lập tự động chạy định kỳ script.
Chúc các bạn thành công!