| MOSQUITTO_RR(1) | Commands | MOSQUITTO_RR(1) |
نام (NAME)
mosquitto_rr - کلاینت MQTT نسخهٔ 5/3.1.1 برای پیامرسانی درخواست/پاسخ
خلاصه دستور (SYNOPSIS)
mosquitto_rr [options] -e response-topic -t message-topic... {payload-options}
options:
[auth-options] [connection-options] [misc-options] [mqtt-options]
[output-options] [tls-certificate-options | tls-psk-options]
auth-options:
[-u username] [-P password]
connection-options:
{[-h hostname] [--unix socket path] [-p port-number]
| -L URL }
[-A bind-address] [--nodelay] [-S]
[--ws] [--proxy socks-url]
misc-options:
[--latency] [-o config-file]
[-W message-processing-timeout]
mqtt-options:
[-c]
[-D command identifier value]
[-i client-id]
[-I client-id-prefix]
[-k keepalive-time]
[-q message-QoS]
[--retain-handling always | new | never]
[-V protocol-version]
[-x session-expiry-interval]
[--will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain]]
output-options:
[-d] [-N] [--pretty] [--quiet] [-R]
[-v]
payload-options:
-f file | -m message | -n |
-s
tls-certificate-options:
[--no-tls]
{--cafile file | --capath dir}
[--tls-use-os-certs]
[--cert file] [--key file]
[--ciphers ciphers] [--insecure]
[--tls-alpn protocol]
[--tls-keylog file]
[--tls-version version]
[--tls-engine engine]
[--keyform {pem | engine}]
[--tls-engine-kpass-sha1 kpass-sha1]
tls-psk-options:
--psk hex-key
--psk-identity identity
[--ciphers ciphers]
[--tls-version version]
mosquitto_rr [--help]
توضیحات (DESCRIPTION)
mosquitto_rr یک کلاینت MQTT نسخهٔ 5/3.1.1 است که میتوان از آن برای انتشار پیام درخواست و انتظار برای دریافت پاسخ استفاده کرد. هنگام استفاده از MQTT v5 که پیشفرض است، mosquitto_rr از قابلیت Request-Response استفاده خواهد کرد.
گزینههای مهم عبارتند از -t، -e و یکی از گزینههای -f، -m، -n و -s.
مثال: mosquitto_rr -t request-topic -e response-topic -m message
اتصالات رمزنگاریشده (ENCRYPTED CONNECTIONS)
این کلاینت از اتصالات رمزنگاریشدهٔ TLS پشتیبانی میکند. اکیداً توصیه میشود که برای هر پیکربندی فراتر از سادهترین حالتها، از یک اتصال رمزنگاریشده استفاده کنید.
برای فعالسازی اتصالات TLS هنگام استفاده از گواهیهای x509، یکی از گزینههای --cafile یا --capath میتواند مشخص شود.
همچنین، در صورتی که از گزینهٔ -p 8883 استفاده شود، گواهیهای ارائهشده توسط سیستمعامل بارگذاری خواهند شد و نیازی به هیچیک از گزینههای --cafile یا --capath نخواهد بود.
برای فعالسازی اتصالات TLS هنگام استفاده از TLS-PSK، باید از گزینههای --psk و --psk-identity استفاده کنید..SH "گزینهها (OPTIONS)"
سه روش برای تعیین گزینهها در mosquitto_rr وجود دارد: فایل پیکربندی پیشفرض، یک فایل پیکربندی مشخصشده، یا گزینهها در خط فرمان.
فایل پیکربندی پیشفرض (Default Config File)
فایل پیکربندی پیشفرض در سیستمهای پوزیکس (POSIX) در مسیر $XDG_CONFIG_HOME/mosquitto_rr یا $HOME/.config/mosquitto_rr و در ویندوز در مسیر %USERPROFILE%\mosquitto_rr قرار دارد.
محتوای فایل پیکربندی باید شامل گزینهها باشد، هر خط یک گزینه در قالب: -option value. اگر گزینهها در خط فرمان نیز مشخص شده باشند، این گزینهها بر همان گزینههای تنظیمشده در فایل پیکربندی اولویت خواهند داشت و جایگزین آنها میشوند. استثنای این قاعده گزینههای نوع پیام هستند که تنها یکی از آنها را میتوان مشخص کرد. همچنین توجه داشته باشید که در حال حاضر برخی گزینهها را نمیتوان نفی (غیرفعال) کرد، مانند -S. گزینههای رمزنگاری TLS را میتوان با گزینهٔ --no-tls نفی (غیرفعال) کرد.
خطوطی از فایل پیکربندی که اولین نویسهٔ آنها # باشد، بهعنوان توضیح (کامنت) در نظر گرفته شده و پردازش نمیشوند.
پیشنهاد میشود که فایلهای پیکربندی عمدتاً برای اهداف احراز هویت استفاده شوند. استفاده از یک فایل پیکربندی به شما اجازه میدهد بدون نیاز به نمایش نام کاربری و گذرواژه در خط فرمان، احراز هویت را انجام دهید.
فایل پیکربندی (Config File)
از نسخهٔ 2.1 در دسترس است.
یک فایل پیکربندی را میتوان در خط فرمان با استفاده از -o config-file مشخص کرد. در صورت استفاده از گزینهٔ -o، فایل پیکربندی پیشفرض بارگذاری نخواهد شد.
قالب آن دقیقاً همانند فایل پیکربندی پیشفرض است.
گزینهها (The options)
-A
-c, --disable-clean-session
هنگامی که یک نشست روی کارگزار ماندگار شود، اشتراکهای کلاینت پس از قطع ارتباط، به همراه پیامهای بعدی QoS 1 و QoS 2 که دریافت میشوند حفظ خواهند شد. با اتصال مجدد کلاینت و در صورتی که نشست پاک نشود، تمام پیامهای صفبندیشده را دریافت خواهد کرد.
در صورت استفاده از این گزینه، شناسهٔ کلاینت باید بهصورت دستی با --id تنظیم شود.
--cafile
همچنین ببینید: --capath
--capath
برای اینکه --capath بهدرستی کار کند، فایلهای گواهی باید پسوند ".crt" داشته باشند و شما باید هر بار که گواهیای را اضافه یا حذف میکنید، دستور "openssl rehash <path to capath>" را اجرا نمایید.
همچنین ببینید: --cafile
--cert
همچنین ببینید: --key و بخش اتصالات رمزنگاریشده (Encrypted Connections).
--ciphers
-d, --debug
-D, --property
-D command identifier value
-D command identifier name value
command شناسهٔ بسته/دستور MQTT است و میتواند یکی از موارد CONNECT، PUBLISH، PUBACK، PUBREC، PUBCOMP، SUBSCRIBE، UNSUBSCRIBE، DISCONNECT، AUTH، یا WILL باشد. ویژگیهای موجود برای هر دستور در بخش ویژگیها (Properties) فهرست شدهاند.
identifier نام ویژگی مورد نظر برای افزودن است. این نام همانطور که در مشخصات آمده نوشته میشود، اما با '-' بهعنوان جداکنندهٔ کلمات. برای مثال: payload-format-indicator. جزئیات بیشتر در بخش ویژگیها (Properties) آمده است.
value مقدار ویژگی مورد نظر برای افزودن است، با نوع دادهای که مختص به آن ویژگی است.
name تنها برای ویژگی user-property بهعنوان اولین رشته از جفترشتهها استفاده میشود. در این حالت، value رشتهٔ دوم از این جفت خواهد بود.
-e
-f, --file
-F
این گزینه بر گزینهٔ -v اولویت دارد، اما جایگزین گزینهٔ -N نمیشود.
--help
-h, --host
-i, --id
-I, --id-prefix
--insecure
-k, --keepalive
--key
همچنین ببینید: --cert و بخش اتصالات رمزنگاریشده (Encrypted Connections).
--keyform
همچنین ببینید: --tls-engine.
-L, --url
بسته به طرحواره (scheme)، پورت بهطور پیشفرض مقادیر متفاوتی خواهد داشت: mqtt:// - 1883، mqtts:// - 8883، ws:// - 80، wss:// - 443. --latency
اگر این گزینه مشخص شود، mosquitto_rr تاخیر بین شروع انتشار درخواست و رسیدن پاسخ را چاپ خواهد کرد. این عدد شامل زمانهای پردازش کارگزار و کلاینت، و همچنین هرگونه تاخیر ذاتی شبکه است.
میتوان از این قابلیت برای اندازهگیری بسیار سادهٔ تاخیر تحویل پیام با تعیین یک موضوع (topic) یکسان برای درخواست و پاسخ استفاده کرد.
هنگام استفاده از --latency، گزینهٔ --nodelay بهطور خودکار استفاده خواهد شد.
-m, --message
-N
-n, --null-message
--nodelay
--no-tls
غیرفعال کردن تمام موارد استفاده از رمزنگاری TLS. این در صورتی مفید است که گزینههای TLS را در یک فایل پیکربندی مشخص کرده باشید اما بخواهید آن گزینهها را غیرفعال کنید. همچنین استفادهٔ خودکار از TLS را هنگام اتصال به درگاه 8883 متوقف میکند.
-o config-file
بارگیری گزینهها از یک فایل پیکربندی. بخشهای Default Config File و Config File را در ابتدای بخش گزینهها ببینید.
-p, --port
-P, --pw
همچنین گزینهٔ --username را ببینید.
--pretty
--proxy
اگر نام کاربری داده نشود، تلاشی برای احراز هویت انجام نمیشود. اگر درگاه داده نشود، پیشفرض 1080 استفاده خواهد شد.
اگر میزبان بهصورت نشانی IPv6 داده شود، باید داخل قلابها قرار گیرد، مثلاً socks5h://[::1]:1080. توجه داشته باشید که قلابها در برخی پوستهها معنای خاصی دارند، بنابراین ممکن است لازم باشد نشانی url پراکسی داخل علامت نقلقول تکی یا دوتایی قرار گیرد.
نسخههای بیشتری از SOCKS ممکن است بسته به تقاضا در آینده در دسترس قرار گیرند، و همانطور که در curl(1) توضیح داده شده است از پیشوندهای پروتکل متفاوتی استفاده خواهند کرد.
--psk
--psk-identity
-q, --qos
این QoS برای تمام موضوعاتی که در یک نمونهٔ تکی از این کلاینت مشترک شدهاند اعمال میشود.
--quiet
-R
همچنین --retain-handling را ببینید.
--retain-handling always | new | never
از این گزینه برای کنترل نحوهٔ مدیریت نگهداری (retain handling) هنگام ایجاد اشتراک استفاده کنید. این گزینه کنترل میکند که یک پیام نگهداشتهشدهٔ (retained) موجود تحت چه شرایطی هنگام اشتراک به کلاینت فرستاده شود.
-S
-s, --stdin-file
-t, --topic
--tls-alpn
--tls-engine
همچنین --keyform را ببینید. --tls-engine-kpass-sha1
همچنین ببینید --tls-engine.
--tls-keylog file
ثبت اطلاعات اتصال TLS در file. این گزینه به ابزارهایی مانند tcpdump، wireshark و mqttshark اجازه میدهد ترافیک TLS را رمزگشایی کرده و ترافیک MQTT را بازرسی کنند. در Wireshark این کار میتواند با تنظیم گزینهٔ (Pre)-Master-Secret log filename برای پروتکل Transport Layer Security انجام شود.
این گزینه فقط باید برای اشکالزدایی استفاده شود، و نباید در محیط عملیاتی به کار رود.
--tls-use-os-certs
--tls-version
-u, --username
همچنین آرگومان --pw را ببینید.
--unix
گزینهٔ socket_domain در mosquitto.conf(5) را برای پیکربندی Mosquitto جهت گوش دادن روی یک سوکت یونیکس ببینید.
-v, --verbose
همچنین ببینید -F.
-V, --protocol-version
-W
--will-payload
--will-qos
--will-retain
--will-topic
--ws
-x
اگر نشست طوری تنظیم شده باشد که هرگز منقضی نشود (خواه با -x یا با -c)، باید یک شناسهٔ کلاینت (client id) ارائه گردد.
سه روش برای قالببندی خروجی چاپشده وجود دارد. در تمام حالات، یک نویسهٔ خطجدید (newline) به ازای هر پیام دریافتشده اضافه میشود، مگر اینکه آرگومان -N داده شده باشد.
حالت «فقط بار داده» (Payload-only) قالب خروجی پیشفرض است و بار داده (payload) را دقیقاً همانگونه که دریافت شده است چاپ میکند.
حالت پرگو (verbose) با -v فعال میشود و موضوع (topic) پیام و بار داده را، جداشده با یک فاصله، چاپ میکند.
گزینهٔ نهایی خروجی قالببندیشده است که به کاربر اجازه میدهد یک قالب خروجی سفارشی تعیین کند. این رفتار با گزینهٔ -F format-string کنترل میشود. رشتهٔ قالب (format string) یک رشته متنی آزاد است که در آن دنبالههای تفسیری با پارامترهای مختلف جایگزین میشوند. دنبالههای تفسیری موجود در زیر شرح داده شدهاند.
سه نویسه برای شروع یک دنبالهٔ تفسیری استفاده میشوند: %، @ و \. دنبالههایی که با % آغاز میشوند یا پارامترهای مربوط به پیام MQTT در حال چاپ هستند، یا دنبالههای کمکی هستند تا برای مثال از لزوم نوشتن رشتههای طولانی قالب تاریخ جلوگیری شود. دنبالههایی که با @ آغاز میشوند به تابع strftime(3) منتقل میشوند (با جایگزین شدن @ با یک % - توجه داشته باشید که تنها نویسهٔ بلافاصله پس از @ به strftime فرستاده میشود). این قابلیت امکان ساخت طیف گستردهای از خروجیهای مبتنی بر زمان را فراهم میکند. گزینههای خروجی strftime از سکویی به سکوی دیگر متفاوت است، بنابراین لطفاً موارد موجود برای سکوی خود را بررسی کنید. یک افزونه برای strftime ارائه شده است که @N میباشد و میتوان از آن برای بهدست آوردن تعداد نانوثانیههای سپریشده از ثانیهٔ فعلی استفاده کرد. تفکیکپذیری (resolution) این گزینه بسته به سکو متغیر است. آخرین نویسهٔ دنباله \ است که برای وارد کردن برخی نویسهها به کار میرود که در غیر این صورت درج آنها دشوار میبود.
نویسههای پرچم (Flag characters)
پارامترهای %A، %C، %d، %E، %F، %f، %I، %l، %m، %p، %R، %S، %t، %x و %X میتوانند بلافاصله پس از نویسهٔ % پرچمهای اختیاری داشته باشند.
0
-
عرض فیلد (Field width)
برخی از پارامترهای مربوط به MQTT را میتوان با گزینهای برای تعیین عرض فیلد آنها به شیوهای مشابه با قالبهای معمول سبک printf قالببندی کرد، یعنی این گزینه حداقل عرض را هنگام چاپ این پارامتر تعیین میکند. اگر طول خروجی کوچکتر از این عرض باشد، فیلد برای رسیدن به این عرض پر (pad) میشود. این مورد برای گزینههای %A، %C، %d، %E، %F، %f، %I، %l، %m، %p، %R، %S، %t، %x و %X اعمال میگردد.
برای مثال %10t حداقل عرض فیلد موضوع (topic) را روی ۱۰ نویسه تنظیم میکند.
حداکثر عرض (Maximum width)
برخی از پارامترهای مربوط به MQTT را میتوان با گزینهای برای تعیین حداکثر عرض فیلد به شیوهای مشابه با قالبهای معمول سبک printf قالببندی کرد، برای مثال %.20t برای حداکثر عرض ۲۰. این مورد برای گزینههای %C، %I، %R و %t اعمال میشود.
برای مثال %10.10t حداقل عرض فیلد موضوع را روی ۱۰ نویسه و حداکثر عرض موضوع را روی ۱۰ نویسه تنظیم میکند، یعنی این فیلد همواره دقیقاً ۱۰ نویسه طول خواهد داشت.
عرض فیلد دودویی هگزادسیمال (Hexadecimal binary field width)
پارامترهای %x و %X بار داده را به طور پیشفرض به عنوان یک رشتهٔ هگزادسیمال تکی خروجی میدهند. همچنین میتوان بار دادهٔ هگزادسیمال را بر اساس طول انتخابی از نیمبایتها (nibble) به فیلدهایی تقسیم کرد. برای مثال، %.2x بار داده را به مقادیر دو نیمبایتی یا یکبایتی، جداشده با فاصله، تقسیم میکند و ممکن است خروجیای مانند 18 83 تولید کند.
نویسهٔ جداکننده به طور پیشفرض یک فاصله است، اما میتوان با افزودن آن نویسه پس از عرض فیلد دودویی، آن را به یکی از !"#$&'()*+,-./:;<=>?@[\]^_`{|}~ تغییر داد. برای مثال %.2:x ممکن است خروجیای مانند 18:83 تولید کند.
ملاحظات چاپ اعداد ممیز شناور (Floating point number printing consideration)
قالب خروجی تنها از استاندارد ممیز شناور IEEE 754 به همان صورتی که در پیوست F از ISO/IEC 9899:1999 شرح داده شده، پشتیبانی میکند. اگر سکوی منتشرکننده از استاندارد نمایش ممیز شناور دیگری به جز IEEE 754 استفاده میکند، سعی نکنید از %f یا %d استفاده کنید، چرا که دادههای نامعتبر دریافت خواهید کرد. اگر مطمئن نیستید سکوی شما از چه نمایش ممیز شناوری استفاده میکند، به احتمال بسیار زیاد IEEE 754 است. اگر با مقادیر ناهنجار یا غیرمنتظره مواجه شدید، بررسی کنید که آیا عدد ممیز شناور در بار دادهٔ ارسالشده از سمت منتشرکننده در استاندارد IEEE 754 کدگذاری شده است یا خیر.
اگر میخواهید اعداد اعشاری شناور را چاپ کنید، مطمئن شوید که تنها در موضوعاتی مشترک میشوید که فقط اعداد اعشاری با قالببندی IEEE 754 ارسال میکنند. پردازش در مورد اعداد اعشاری بسیار سختگیرانه است و در صورت دریافت هر چیزی به جز ممیز شناور، یک پیام خطا چاپ خواهد شد.
پارامترهای مربوط به MQTT (MQTT related parameters)
کمکیها (Helpers)
اگر محموله یک JSON معتبر نباشد، پیام خطای "Error: Message payload is not valid JSON on topic <topic>" در stderr چاپ خواهد شد.
نویسههای گریز (Escape characters)
کلاینت میتواند پیامی را نزد کارگزار (broker) ثبت کند که در صورت قطع ارتباط غیرمنتظره ارسال خواهد شد. برای اطلاعات بیشتر mqtt(7) را ببینید.
حداقل پیشنیاز برای این کار، استفاده از --will-topic جهت تعیین موضوعی (topic) است که وصیت باید روی آن ارسال شود. این کار منجر به ارسال پیامی بدون ماندگاری (non-retained)، با طول صفر و با QoS 0 میشود.
برای تغییر سایر پارامترهای وصیت از آرگومانهای --will-retain، --will-payload و --will-qos استفاده کنید.
ویژگیها (PROPERTIES)
گزینهٔ -D / --property امکان افزودن ویژگیها به مراحل مختلف اجرای mosquitto_rr را فراهم میکند. ویژگیهای پشتیبانیشده برای هر دستور به شرح زیر است:
اتصال (Connect)
اشتراک (Subscribe)
لغو اشتراک (Unsubscribe)
قطع اتصال (Disconnect)
وضعیت خروج (EXIT STATUS)
در صورت موفقیت صفر، یا در صورت بروز خطا غیرصفر است. اگر اتصال در سطح MQTT توسط کارگزار رد شود، کد خروج همان کد دلیل CONNACK خواهد بود. اگر خطای دیگری رخ دهد، کد خروج مقدار بازگشتی libmosquitto است.
کدهای CONNACK در MQTT v3.1.1:
کدهای CONNACK در MQTT v5:
سایر کدها:
$XDG_CONFIG_HOME/mosquitto_rr, $HOME/.config/mosquitto_rr, $HOME/snap/mosquitto/current/.config/mosquitto_rr (برای نصبهای snap)
گزارش باگها (BUGS)
اطلاعات مربوط به باگهای mosquitto را میتوان در پیوند زیر یافت: https://github.com/eclipse-mosquitto/mosquitto/issues
همچنین ببینید (SEE ALSO)
mosquitto(7), mqtt(7), mosquitto_pub(1), mosquitto_sub(1), mosquitto(8), libmosquitto(3), mosquitto-tls(7)
نویسندگان (AUTHORS)
Roger Light <roger@atchoo.org>
| 04/03/2026 | Mosquitto Project |