Tôi rất khuyến khích không sử dụng ping
để xác định kết nối. Có quá nhiều quản trị viên mạng vô hiệu hóa ICMP (giao thức mà nó sử dụng) do lo lắng về các cuộc tấn công lũ ping bắt nguồn từ mạng của họ.
Thay vào đó, tôi sử dụng một bài kiểm tra nhanh về một máy chủ đáng tin cậy trên một cổng mà bạn có thể mong đợi được mở:
if nc -zw1 google.com 443; then
echo "we have connectivity"
fi
Cái này sử dụng netcat ( nc
) trong chế độ quét cổng của nó , poke nhanh ( -z
là chế độ zero-I / O [được sử dụng để quét] ) với thời gian chờ nhanh ( -w 1
chờ tối đa một giây). Nó kiểm tra Google trên cổng 443 (HTTPS).
Tôi đã sử dụng HTTPS thay vì HTTP như một nỗ lực để bảo vệ chống lại các cổng bị giam giữ và các proxy minh bạch có thể trả lời trên cổng 80 (HTTP) cho bất kỳ máy chủ nào. Điều này ít có khả năng khi sử dụng cổng 443 vì sẽ có sự không phù hợp với chứng chỉ, nhưng nó vẫn xảy ra.
Nếu bạn muốn chứng minh bản thân trước điều đó, bạn sẽ cần xác thực bảo mật trên kết nối:
test=google.com
if nc -zw1 $test 443 && echo |openssl s_client -connect $test:443 2>&1 |awk '
handshake && $1 == "Verification" { if ($2=="OK") exit; exit 1 }
$1 $2 == "SSLhandshake" { handshake = 1 }'
then
echo "we have connectivity"
fi
Việc này kiểm tra một kết nối (thay vì chờ thời gian mở ra) và sau đó thực hiện bắt tay SSL, nhập vào giai đoạn xác minh. Nó âm thầm thoát ("đúng") nếu xác minh là "OK" hoặc nếu không có lỗi ("sai"), thì chúng tôi báo cáo kết quả tìm kiếm.
$ ethtool <dev> | awk '$0 ~ /link detected/{print $3}'