Tek astar
Hızla hizmet eden güzel bir tek astarı bir araya getirdim, keyfi bir aralıkta rastgele sayıda bağlantı noktası yakalamaya izin verdim (burada okunabilirlik için 4 satıra ayrılmıştır):
comm -23 \
<(seq "$FROM" "$TO") \
<(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep '[0-9]\{1,5\}' | sort -n | uniq) \
| shuf | head -n "$HOWMANY"
Satır satır
commsıralanmış dosyaları iki dosyada karşılaştıran bir yardımcı programdır. Üç sütun çıkarır: yalnızca ilk dosyada görünen satırlar, yalnızca ikinci dosyada görünen satırlar ve ortak satırlar. Belirterek -23, sonraki sütunları bastırırız ve yalnızca ilk sütunu saklarız. Bunu, metin satırları dizisi olarak ifade edilen iki kümenin farkını elde etmek için kullanabiliriz. comm Burada öğrendim .
İlk dosya, aralarından seçim yapabileceğimiz bağlantı noktası aralığıdır. seqnumaralardan sıralanmış bir dizi üretir $FROMiçin $TO. Sonuç, işlem ikamesicomm kullanılarak ilk dosya olarak pipetlenir .
İkinci dosya biz çağırarak elde olduğunu, bağlantı noktalarının sıralı listesi ss(ile komutu -t, yani TCP bağlantı noktaları -a- kurulmuş ve dinleme - ve tüm anlam -n, kararlılığı, diyelim kalkmayın - sayısal 22etmek ssh). Daha sonra yalnızca awkyerel adresi ve bağlantı noktasını içeren dördüncü sütunu seçeriz . Biz kullanmak cutile bölünmüş adresi ve port için :sınırlayıcı ve ikincisi (sadece tutmak -f2). ssBiz tarafından kurtulmak olduğunu aynı şekilde bir başlık, grepSonra uymak artık 5'ten olan sayıların boş olmayan diziler için ping commtarafından 'ın gereksinimi sortsayısal ing ( -n) ve kopyaların kurtulmak alma uniq.
Şimdi sıralanan açık bağlantı noktalarının bir listesi var, shufsonra ilk "$HOWMANY"olanları kapmak için uçabiliriz head -n.
Misal
Özel aralıktaki üç rastgele açık bağlantı noktasını alın (49152-65535)
comm -23 <(seq 49152 65535) <(ss -tan | awk '{print $4}' | cut -d':' -f2 | grep "[0-9]\{1,5\}" | sort | uniq) | shuf | head -n 3
örneğin geri dönebilir
54930
57937
51399
notlar
- geçiş
-tile -ude ssyerine serbest UDP portlarını alır.
shufRastgele bir bağlantı noktası almak istemiyorsanız bırakın