Veri gönderildikten sonra netcat bağlantısı otomatik olarak nasıl kapatılır?


22

Bir komut dosyasından aşağıdaki komutu yürütüyorum:

echo '{"hostUp": true}' | sudo /usr/local/bin/netcat localhost 8001

Ancak, netcat istemcisi süresiz olarak açık kalır. Bu veriler gönderildikten sonra bağlantıyı nasıl kapatabilirim?

Yanıtlar:


17

Hem diğer cevaplar -chem de -qverilenler doğru bağlamda doğrudur, ancak neden birden fazla cevap olduğunu özetlemek ve daha genel bir çözüm vermek yardımcı olabilir.

Bu farklı seçenekler aynı şeyi yapar, ancak netcat'in farklı uygulamalarıdır:

  • -c Netcat'in GNU uygulaması
  • -q Netcat'in OpenBSD uygulaması.
  • -w (diğer?) Netcat'in OpenBSD uygulaması.

Bazı sürümler, -qve -wseçeneklerinden çıkmadan önce beklenecek saniye sayısını belirtmek için bir int gerektirir . Bu int , sürüme bağlı olarak > 0veya olmalıdır >= 0.

Birden fazla makineye bir şey uyguluyorsanız ve aynı netcat uygulamasını kullandıklarından emin değilseniz, timeoutbirkaç saniye sonra netcat'i öldürmek için netcat çağrınızı programla tamamlamayı düşünebilirsiniz .

timeout 5 echo '{"hostUp": true}' | netcat localhost 8001

Bu yaklaşım biraz beceriksizdir, çünkü veriyi başarılı bir şekilde gönderip göndermediğine bakılmaksızın netcat'in yürütülmesinde bir üst sınır koyar, ancak az miktarda veri gönderiyorsanız ve yedeklemek için birkaç saniyeniz varsa, bu işe yaramalıdır herhangi bir netcat uygulaması ile.


5

-qParametreyi kullanabilirsiniz , ancak netcatsunucunun da kapatılmasına neden olur .

$ echo '{"hostUp": true}' | sudo /usr/local/bin/netcat -q 5 localhost 8001    

3

Benim durumumda, Homebrew (v 0.7.1) aracılığıyla yüklü Mac'imde kullandığım netcat kopyasının -q seçeneği yoktu, ancak STDIN EOF'u kapatmak ve koymak için -c seçeneğini kullanabildim bir döngüdeki tüm komut:

while true ; do printf 'HTTP/1.1 200 OK\r\n\r\ncool, thanks' | netcat -l -c -p 8888 ; done

1

Ubuntu 18.04 sunucusunda aşağıdakileri kullanmak zorunda kaldım: (man sayfalarında bulundu)

echo '{"hostUp": true}' | sudo /usr/local/bin/netcat -N localhost 8001

Açıkçası diğer dağıtımlara -Nbenzer -qveya-c

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.