Lót
Tôi đã kết hợp một lớp lót đẹp, nhanh chóng phục vụ mục đích, cho phép lấy một số cổng tùy ý trong một phạm vi tùy ý (ở đây được chia thành 4 dòng để dễ đọc):
comm -23 \
<(seq "$FROM" "$TO" | sort) \
<(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep '[0-9]\{1,5\}' | sort -u) \
| shuf | head -n "$HOWMANY"
Từng dòng
commlà một tiện ích so sánh các dòng trong hai tệp phải xuất hiện được sắp xếp theo thứ tự abc. Nó xuất ra ba cột: các dòng chỉ xuất hiện trong tệp đầu tiên, các dòng chỉ xuất hiện trong cột thứ hai và các dòng chung. Bằng cách chỉ định -23chúng tôi triệt tiêu các cột sau và chỉ giữ cột đầu tiên. Chúng ta có thể sử dụng điều này để có được sự khác biệt của hai bộ, được biểu thị dưới dạng một chuỗi các dòng văn bản. Tôi đã học về comm đây .
Tệp đầu tiên là phạm vi cổng mà chúng ta có thể chọn. seqtạo ra một chuỗi các số được sắp xếp từ $FROMđến $TO. Kết quả được sắp xếp theo thứ tự abc (thay vì số) và được chuyển commthành tập tin đầu tiên sử dụng thay thế quy trình .
Tệp thứ hai là danh sách các cổng được sắp xếp mà chúng ta có được bằng cách gọi sslệnh (với -tnghĩa là các cổng TCP, -anghĩa là tất cả - được thiết lập và lắng nghe - và -nsố - không cố gắng giải quyết, nói, 22thành ssh). Sau đó chúng tôi chỉ chọn cột thứ tư với awk, chứa địa chỉ và cổng cục bộ. Chúng tôi sử dụng cutđể phân tách địa chỉ và cổng với :dấu phân cách và chỉ giữ lại cái sau ( -f2). sscũng xuất ra một tiêu đề mà chúng ta loại bỏ bằng grepping cho các chuỗi số không trống không dài hơn 5. Sau đó, chúng tôi tuân thủ commyêu cầu của chúng bằng cách nhập sortmà không trùng lặp -u.
Bây giờ chúng ta có một danh sách sắp xếp các cổng mở, mà chúng ta có thể shufchạy đến sau đó lấy các cổng đầu tiên "$HOWMANY"với head -n.
Thí dụ
Lấy ba cổng mở ngẫu nhiên trong phạm vi riêng tư (49152-65535)
comm -23 <(seq 49152 65535 | sort) <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep "[0-9]\{1,5\}" | sort -u) | shuf | head -n 3
có thể trở lại ví dụ
54930
57937
51399
Ghi chú
- chuyển
-tvới -utrong ssđể có được cổng UDP miễn phí thay thế.
- thay thế
shufbằng sort -nnếu bạn muốn có được các cổng có sẵn được sắp xếp bằng số thay vì ngẫu nhiên
-nvào netstat và một grep chọn lọc hơn). Cách thực hiện là thử và mở một cổng ở bất kỳ chế độ nào bạn cần và thử một cổng khác nếu không có sẵn.