Saya mencoba mengirim string kecil ke statsd via nc di dalam blok baca:
while read line; do
printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done
Sayangnya, ketika dalam mode UDP, nc tampaknya ingin menunggu tanpa batas, meskipun saya telah menentukan -q 0
, yang dikatakan halaman manual akan membuat program keluar segera setelah EOF.
Saya sudah mencoba melewatinya -w 1
, tetapi jika data yang saya kirim masuk lebih dari satu baris per detik, data akan naik, dan saya kehilangan statistik waktu nyata saya (belum lagi mempertaruhkan semacam buffer overflow semacam).
Apakah mungkin untuk melakukan apa yang saya coba lakukan dengan netcat, atau apakah saya perlu menulis sesuatu dalam bahasa yang memiliki perpustakaan statsd?
Jawaban:
Saya akhirnya memperbaiki masalah dengan beralih ke
socat
:sumber
Anda dapat menetapkan 0 sebagai nilai batas waktu untuk -w, sehingga tidak akan menunggu sama sekali.
sumber
invalid wait-time 0
menambahkan opsi -v memecahkan masalah saya. Alasan saya tidak yakin.
sumber
Saya memiliki masalah yang sama; dipecahkan dengan menggunakan
-c
opsi:jadi sesuatu seperti
Ya, tidak masuk akal untuk "menutup" koneksi udp - tapi itu akhirnya berhasil.
sumber
-c
menyelesaikan masalah saya dengannetcat (The GNU Netcat) 0.7.1
Bagi kami, kami mengirim muatan nc dari satu mesin ke komputer lain melalui skrip python. Dalam python, ketika kami secara eksplisit menyandikan payload di 'UTF-8', itu hanya berfungsi.
sumber