Netcat'ı sadece port aralığındaki tüm portlar başarılı olursa başarılı olmaya zorlayabilir mi?


0

ncDoğrulama betiğinin bir parçası olarak kullanıyorum ve nclistelenen her komutun çıktısını beklenen çıktının ne olduğuna göre kontrol ediyorum .

Örneğin,

nc -zvw1 serv1.host.com 443 | gawk '{print $7}' Expected output: succeeded!

Karşılaştığım sorun şu ki, bir dizi portu kontrol etmek istersem, bazı testler aslında geri gelse de succeeded!, tüm portların böyle döndüğünün garantisi yok . Ben karşılaştırmak çünkü bu benim için bir sorundur cmd:outputbir üzerinde 1:1temelinde komutları ve beklenen çıkışı listeleyen bir yapılandırma dosyasını kapalı tabanlı.

Gibi bir şey listelemek yerine:

nc -zvw1 serv1.host.com 443 | gawk '{print $7}' nc -zvw1 serv1.host.com 444 | gawk '{print $7}' nc -zvw1 serv1.host.com 445 | gawk '{print $7}'

Expected result: succeeded! Expected result: succeeded! Expected result: succeeded!

Aralıktaki herhangi bir bağlantı noktası ncbaşarısız olursa, başarısız olmaya zorlayabilmeyi isterdim ; yani bu durumda konfigürasyonum şunlara yoğunlaştırılabilir:

nc -zvw1 serv1.host.com 443-445 | gawk '{print $7}' Expected result: succeeded!

Bu ne yazık ki, yalındır bir sorunun uzun soluklu bir açıklamasıdır. Özür dilemek.


nchata üzerine sıfır olmayan bir dönüş kodu ayarlar. İlgilendiğiniz port numaraları arasında geçiş yapabilmeli ve ilk kez $?sıfır olmayan bir hata ile çıkmalısınız.
Bratchley

Yanıtlar:


1

Bu muhtemelen işe yarayabilir:

seq 443 445 \
| xargs -n1 sh -c 'nc -zvw1 serv1.host.com $0 >/dev/null 2>&1 || (echo error! && exit 255)' 2>/dev/null \
&& echo succeeded!

Bu temelde bağlantı aralıkları taklit seqve xargsve kullandığı nc'in dönüş değeri, için echo error!ve ayar exit 255iptal etmek için xargsya da echo succeeded!başarıyla verilen her port numarasına bağlı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.