Tek astar
Amacına hızlı bir şekilde hizmet eden ve isteğe bağlı bir aralıkta rasgele sayıda bağlantı noktası alma olanağı sağlayan güzel bir astarı bir araya getirdim (burada okunabilirlik için 4 satıra bölünmüştür):
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"
Satır satır
comm
Satırları alfabetik olarak sıralanmış 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 genel satırlar. Belirterek -23
, ikinci sütunları bastırır ve yalnızca birincisini tutarız. Bunu, metin satırlarının bir sırası olarak ifade edilen iki küme farkını elde etmek için kullanabiliriz. comm
Burada öğrendim .
İlk dosya, seçebileceğimiz portların aralığıdır. seq
gelen bir sayı kriteri dizisi üreten $FROM
için $TO
. Sonuç, alfabetik olarak (sayısal yerine) sıralanır ve işlem değiştirmecomm
kullanılarak ilk dosya olarak aktarılır .
İkinci dosya biz çağırarak elde olduğunu, bağlantı noktalarının sıralı listesi ss
komutu ile ( -t
, anlam TCP bağlantı noktaları -a
- kurulmuş ve dinleme - ve tüm anlam -n
sayısal -, diyelim ki, çözümlemeye kalkma 22
için ssh
). Daha sonra sadece awk
yerel adresi ve portu içeren dördüncü sütunu seçiyoruz . Biz kullanmak cut
ile adresi ve port bölünmüş :
(sınırlayıcı ve tek ikincisi tutmak -f2
). ss
aynı şekilde bir başlık, biz tarafından kurtulmak olduğunu grep
artık Sonra uymak 5'ten olan sayıların boş olmayan diziler için ping comm
tarafından 'ın gereksinimi sort
yineleme olmadan ing -u
.
Şimdi shuf
daha sonra ilkleri kapmak için el koyabileceğimiz sıralı bir açık portlar listemiz "$HOWMANY"
var head -n
.
Örnek
Özel serideki üç rastgele açık portu al (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
örneğin geri dönebilir
54930
57937
51399
notlar
- geçiş
-t
ile -u
in ss
yerine ücretsiz UDP portlarını alır.
- rastgele yerine sayısal olarak sıralanan kullanılabilir bağlantı noktaları almayı tercih ediyorsanız
shuf
ile değiştirinsort -n
-n
netstat ve daha seçici bir grep ekler ). Bunu yapmanın yolu, istediğiniz modda bir bağlantı noktasını denemek ve açmak ve mevcut değilse başka bir tane denemek.