MOSQUITTO_SUB(1) Commands MOSQUITTO_SUB(1)

mosquitto_sub - کلاینت پروتکل MQTT نسخه‌های ۵، ۳.۱.۱ و ۳.۱ برای اشتراک در موضوعات

mosquitto_sub [options] {-t message-topic... | -U unsubscribe-topic...}

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:
[-E] [-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-as-published] [--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] [-C msg-count] [--message-rate] [-N] [--pretty] [--random-filter chance] [--remove-retained] [-R | --retained-only] [--quiet] [-T filter-out...] [-v] [-w | --watch]

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_sub [--help]

mosquitto_sub یک کلاینت ساده برای پروتکل MQTT نسخه ۵، ۳.۱.۱ و ۳.۱ است که در موضوعات (topics) مشترک می‌شود و پیام‌های دریافتی را چاپ می‌کند.

علاوه بر اشتراک در موضوعات، mosquitto_sub می‌تواند پیام‌های دریافتی را فیلتر کند تا چاپ نشوند (به گزینه -T مراجعه کنید) یا از موضوعات لغو اشتراک کند (به گزینه -U مراجعه کنید). لغو اشتراک از موضوعات برای کلاینت‌هایی که با غیرفعال بودن نشست تمیز (clean session) متصل می‌شوند کاربرد دارد.

این کلاینت از اتصالات رمزنگاری‌شده با TLS پشتیبانی می‌کند. اکیداً توصیه می‌شود برای هرگونه کاربردی فراتر از ساده‌ترین تنظیمات، از یک اتصال رمزنگاری‌شده استفاده کنید.

جهت فعال‌سازی اتصالات TLS هنگام استفاده از گواهی‌های x509، می‌توان یکی از گزینه‌های --cafile یا --capath را مشخص کرد.

همچنین، در صورتی که از گزینه -p 8883 استفاده شود، گواهی‌های ارائه‌شده توسط سیستم‌عامل بارگذاری خواهند شد و نیازی به هیچ‌یک از گزینه‌های --cafile یا --capath نخواهد بود.

برای فعال‌سازی اتصالات TLS در صورت استفاده از TLS-PSK، باید از گزینه‌های --psk و --psk-identity استفاده کنید.

سه روش برای ارائه گزینه‌ها به mosquitto_sub وجود دارد: فایل پیکربندی پیش‌فرض، یک فایل پیکربندی مشخص‌شده، یا گزینه‌ها در خط فرمان.

فایل پیکربندی پیش‌فرض در مسیر $XDG_CONFIG_HOME/mosquitto_sub یا $HOME/.config/mosquitto_sub در سیستم‌های سازگار با POSIX، یا در مسیر %USERPROFILE%\mosquitto_sub در سیستم‌های ویندوز قرار دارد.

محتوای فایل پیکربندی باید شامل گزینه‌ها باشد، هر گزینه در یک خط به صورت: -option value. اگر گزینه‌ها در خط فرمان نیز مشخص شوند، آن گزینه‌ها مقادیر تعیین‌شده در فایل پیکربندی را بازنویسی خواهند کرد. استثنای این قاعده گزینه‌های نوع پیام هستند که تنها یکی از آن‌ها می‌تواند مشخص شود. همچنین توجه داشته باشید که در حال حاضر برخی گزینه‌ها را نمی‌توان نفی کرد، مانند -S. گزینه‌های رمزنگاری TLS را می‌توان با گزینه --no-tls غیرفعال کرد.

خطوطی از فایل پیکربندی که با نویسه # شروع می‌شوند به عنوان توضیحات در نظر گرفته شده و پردازش نمی‌شوند.

پیشنهاد می‌شود فایل‌های پیکربندی عمدتاً برای اهداف احراز هویت به کار روند. استفاده از فایل پیکربندی امکان احراز هویت را بدون نیاز به نمایش نام کاربری و گذرواژه در خط فرمان فراهم می‌کند.

از نسخه ۲.۱ در دسترس است.

یک فایل پیکربندی را می‌توان با گزینه -o config-file در خط فرمان مشخص کرد. در صورت استفاده از گزینه -o فایل پیکربندی پیش‌فرض بارگذاری نخواهد شد.

قالب آن همانند فایل پیکربندی پیش‌فرض است.

-A

اتصال خروجی را به یک نشانی IP یا نام میزبان محلی متصل (bind) می‌کند. در صورتی که نیاز به محدود کردن ارتباطات شبکه به یک رابط خاص دارید از این آرگومان استفاده کنید.

-c, --disable-clean-session

غیرفعال‌سازی «نشست تمیز» (clean session) / فعال‌سازی حالت کلاینت پایدار. با استفاده از این آرگومان، به کارگزار دستور داده می‌شود که هنگام اتصال کلاینت، نشست‌های موجود برای همان شناسه کلاینت را پاک نکند و با قطع اتصال کلاینت، نشست هرگز منقضی نشود. کلاینت‌های MQTT نسخه ۵ می‌توانند با آرگومان -x مدت‌زمان انقضای نشست خود را تغییر دهند.

هنگامی که یک نشست روی کارگزار پایدار بماند، اشتراک‌های کلاینت پس از قطع اتصال حفظ می‌شوند و پیام‌های بعدی با سطوح کیفیتی QoS 1 و QoS 2 که برسند ذخیره می‌گردند. زمانی که کلاینت دوباره متصل شود و نشست را پاک نکند، تمامی پیام‌های صف‌بندی‌شده را دریافت خواهد کرد.

در صورت استفاده از این گزینه، شناسه کلاینت باید به صورت دستی با --id تنظیم شود.

--cafile

مسیر یک فایل حاوی گواهی‌های مرجع گواهی (CA) معتبر و کدگذاری‌شده با فرمت PEM را مشخص می‌کند. برای فعال‌سازی ارتباط امن SSL/TLS استفاده می‌شود.

همچنین ببینید: --capath

--capath

مسیر دایرکتوری حاوی گواهی‌های مرجع گواهی (CA) معتبر و کدگذاری‌شده با فرمت PEM را مشخص می‌کند. برای فعال‌سازی ارتباط امن SSL/TLS استفاده می‌شود.

برای کارکرد صحیح --capath باید پسوند فایل‌های گواهی «.crt» باشد و هر بار که گواهی جدیدی اضافه یا حذف می‌کنید، دستور «openssl rehash <path to capath>» را اجرا نمایید.

همچنین ببینید: --cafile

--cert

مسیر فایل حاوی گواهی کدگذاری‌شده با فرمت PEM برای این کلاینت را مشخص می‌کند (در صورتی که سرور آن را درخواست کند).

همچنین ببینید: --key و بخش «اتصالات رمزنگاری‌شده».

--ciphers

فهرستی از الگوریتم‌های رمزنگاری TLS سازگار با OpenSSL برای پشتیبانی در کلاینت. برای اطلاعات بیشتر به ciphers(1) مراجعه کنید.

-C

قطع اتصال و خروج فوری از برنامه پس از دریافت تعداد مشخص‌شده پیام. این گزینه مثلاً در اسکریپت‌های شل که در آن‌ها فقط دریافت یک مقدار وضعیت واحد مد نظر است، می‌تواند مفید باشد.

برای چاپ تنها اولین دسته از پیام‌های تازه (یعنی پیام‌هایی که پرچم retain برای آن‌ها تنظیم نشده است)، این گزینه را با -R یا --retain-handling never ترکیب کنید، یا برای فیلتر کردن موضوعات پردازش‌شده از ترکیب آن با -T استفاده نمایید.

-d, --debug

فعال‌سازی پیام‌های اشکال‌زدایی (debug).

-D, --property

تنظیم ویژگی‌های MQTT نسخه ۵ برای این کلاینت. در صورت استفاده از این گزینه، کلاینت به عنوان کلاینت MQTT نسخه ۵ تنظیم خواهد شد. این گزینه دو شکل دارد:

-D command identifier value

-D command identifier name value

command شناسه دستور یا بسته MQTT است و می‌تواند یکی از مقادیر CONNECT، PUBLISH، PUBACK، PUBREC، PUBCOMP، SUBSCRIBE، UNSUBSCRIBE، DISCONNECT، AUTH یا WILL باشد. ویژگی‌های در دسترس برای هر دستور در بخش ویژگی‌ها فهرست شده‌اند.

identifier نام ویژگی مورد نظر برای افزودن است. این نام مطابق مشخصات استاندارد است، اما خط تیره «-» به عنوان جداکننده کلمات به کار می‌رود؛ به عنوان مثال: payload-format-indicator. جزئیات بیشتر در بخش ویژگی‌ها آمده است.

value مقدار ویژگی مورد نظر است که نوع داده آن وابسته به همان ویژگی مشخص است.

name فقط برای ویژگی user-property به عنوان اولین رشته از جفت‌رشته‌ها به کار می‌رود. در این حالت، value رشته دوم جفت خواهد بود.

-E

در صورت مشخص شدن این گزینه، mosquitto_sub بلافاصله پس از تایید شدن تمام اشتراک‌های آن توسط کارگزار، از برنامه خارج خواهد شد. در ترکیب با -c این گزینه امکان می‌دهد یک نشست کلاینت پایدار روی کارگزار برای استفاده در آینده آماده‌سازی شود، بدون اینکه نیازی به دریافت پیامی باشد.

-F

تعیین قالب چاپ خروجی. این گزینه امکان می‌دهد مشخص کنید چه اطلاعاتی از هر پیام بر روی صفحه نمایش داده شود. برای جزئیات کامل، بخش قالب خروجی (OUTPUT FORMAT) در زیر را مشاهده کنید.

این گزینه بر گزینه -v ارجحیت دارد و آن را بازنویسی می‌کند، اما گزینه -N را بازنویسی نمی‌کند.

--help

نمایش اطلاعات راهنمای استفاده از دستور.

-h, --host

مشخص کردن میزبان مقصد برای اتصال. مقدار پیش‌فرض localhost است.

-i, --id

شناسه‌ای که برای این کلاینت استفاده می‌شود. در صورت مشخص نشدن، شناسه کلاینت با توجه به نسخه MQTT مورد استفاده تولید می‌شود. برای نسخه v3.1.1/v3.1، کلاینت شناسه‌ای با قالب mosq-XXXXXXXXXXXXXXXXXX تولید می‌کند که در آن X با نویسه‌های الفبایی-عددی تصادفی جایگزین می‌شود. برای نسخه v5.0، کلاینت شناسه‌ای با طول صفر ارسال می‌کند و سرور شناسه‌ای برای کلاینت تولید خواهد کرد.

-I, --id-prefix

پیشوندی که با افزودن شناسه فرایند (PID) کلاینت به انتهای آن، شناسه کلاینت ساخته می‌شود. این گزینه در شرایطی که کارگزار از گزینه clientid_prefixes استفاده می‌کند کاربرد دارد. نمی‌توان آن را هم‌زمان با آرگومان --id به کار برد.

--insecure

هنگام استفاده از رمزنگاری مبتنی بر گواهی، این گزینه اعتبارسنجی نام میزبان سرور در گواهی سرور را غیرفعال می‌کند. این ویژگی می‌تواند هنگام آزمایش پیکربندی اولیه سرور مفید باشد، اما این امکان را فراهم می‌کند که شخص ثالث مخرب بتواند از طریق جعل DNS سرور شما را جعل کند. از این گزینه فقط در محیط آزمایش استفاده کنید. اگر مجبور به استفاده از این گزینه در محیط عملیاتی هستید، پیکربندی شما ایراد دارد و استفاده از رمزنگاری بی‌فایده است.

-k, --keepalive

تعداد ثانیه‌های بین ارسال دستورات PING به کارگزار به منظور اطلاع‌رسانی اینکه کلاینت هنوز متصل و فعال است. مقدار پیش‌فرض ۶۰ ثانیه است.

--key

مسیر یک فایل حاوی کلید خصوصی کدگذاری‌شده با فرمت PEM برای این کلاینت جهت انجام احراز هویت دوطرفه TLS با سرور.

همچنین ببینید: --cert و بخش «اتصالات رمزنگاری‌شده».

--keyform

نوع کلید خصوصی مورد استفاده هنگام برقراری اتصالات TLS را مشخص می‌کند. این مقدار می‌تواند «pem» یا «engine» باشد. این پارامتر زمانی مفید است که از ماژول TPM استفاده شده و کلید خصوصی با آن ایجاد شده باشد. مقدار پیش‌فرض «pem» است که به معنای استفاده از فایل‌های کلید خصوصی معمولی است.

همچنین ببینید: --tls-engine.

-L, --url

مشخص کردن کاربر، گذرواژه، نام میزبان، پورت و موضوع به صورت هم‌زمان در قالب یک نشانی URL. قالب نشانی باید به شکل زیر باشد: mqtt(s)://[username[:password]@]host[:port]/topic یا ws(s)://[username[:password]@]host[:port]/path

بسته به طرح نشانی (scheme)، پورت پیش‌فرض مقادیر متفاوتی خواهد داشت: mqtt:// - 1883، mqtts:// - 8883، ws:// - 80، wss:// - 443.

--message-rate

از نسخه ۲.۱ در دسترس است.

به جای چاپ پیام‌های دریافتی، تعداد پیام‌های دریافتی را در بازه‌های زمانی یک ثانیه‌ای چاپ می‌کند. هنگام فعال بودن این گزینه، سایر گزینه‌های مربوط به قالب‌بندی خروجی معتبر نخواهند بود.

-N

هنگام چاپ بدنه پیام (payload)، نویسه انتهای خط (newline) به آن اضافه نشود. این کار امکان جریان دادن مستقیم داده‌های بدنه از چندین پیام به برنامه‌ای دیگر را به شکل دست‌نخورده فراهم می‌کند. این گزینه عملاً تنها زمانی کاربرد دارد که از -v استفاده نشده باشد.

--nodelay

غیرفعال‌سازی الگوریتم نِیگل (Nagle) برای سوکت. این کار تاخیر پیام‌های ارسالی را کاهش می‌دهد، که به‌ویژه برای پیام‌های کوچک با تواتر نسبتاً کم ملموس است. استفاده از این گزینه ممکن است منجر به ارسال بسته‌های بیشتری نسبت به حالت معمول شود.

--no-tls

از نسخه ۲.۱ در دسترس است.

غیرفعال‌سازی کامل استفاده از رمزنگاری TLS. این گزینه زمانی کاربرد دارد که گزینه‌های TLS را در یک فایل پیکربندی تعیین کرده‌اید اما قصد دارید آن گزینه‌ها را موقتاً غیرفعال کنید. همچنین استفاده خودکار از TLS را هنگام اتصال به پورت 8883 متوقف می‌سازد.

-o config-file

از نسخه ۲.۱ در دسترس است.

بارگذاری گزینه‌ها از یک فایل پیکربندی. بخش‌های «فایل پیکربندی پیش‌فرض» و «فایل پیکربندی» در ابتدای بخش گزینه‌ها را مشاهده کنید.

-p, --port

اتصال به پورت مشخص‌شده. در صورت تعیین نشدن، مقدار پیش‌فرض ۱۸۸۳ برای MQTT ساده یا ۸۸۸۳ برای MQTT بر روی TLS استفاده خواهد شد.

-P, --pw

تعیین گذرواژه برای احراز هویت در کارگزار. استفاده از این آرگومان بدون مشخص کردن نام کاربری در نسخه‌های v3.1 یا v3.1.1 پروتکل MQTT نامعتبر است.

همچنین گزینه --username را مشاهده کنید.

--pretty

هنگام استفاده از قالب خروجی JSON با %j یا %J، رفتار پیش‌فرض این است که خروجی بدون قالب‌بندی چاپ شود. تعیین گزینه --pretty پیام‌ها را در قالبی زیباتر و خواناتر برای انسان چاپ می‌کند.

--proxy

مشخص کردن یک پروکسی SOCKS5 برای اتصال از طریق آن. انواع احراز هویت «None» و «username» پشتیبانی می‌شوند. مقدار socks-url باید به صورت socks5h://[username[:password]@]host[:port] باشد. پیشوند پروتکل socks5h به این معنی است که نام‌های میزبان توسط پروکسی ترجمه می‌شوند. نمادهای %25، %3A و %40 در صورت وجود در نام کاربری یا گذرواژه به ترتیب به %، : و @ تبدیل می‌شوند.

اگر نام کاربری داده نشود، هیچ تلاشی برای احراز هویت انجام نمی‌شود. اگر پورت داده نشود، مقدار پیش‌فرض ۱۰۸۰ استفاده می‌شود.

اگر میزبان به صورت نشانی IPv6 داده شود، باید درون کروشه قرار گیرد؛ مانند socks5h://[::1]:1080. توجه داشته باشید که کروشه‌ها در برخی پوسته‌ها معنی خاصی دارند، بنابراین ممکن است لازم باشد نشانی پروکسی داخل نقل‌قول تکی یا دوتایی قرار گیرد.

نسخه‌های بیشتری از SOCKS ممکن است در آینده بسته به تقاضا اضافه شوند و از پیشوندهای پروتکل متفاوتی استفاده کنند، همان‌طور که در curl(1) توضیح داده شده است.

--psk

ارائه کلید از پیش اشتراک‌گذاشته‌شده (PSK) به صورت هگزادسیمال (بدون پیشوند 0x) مطابق با کلید تعریف‌شده در کارگزار جهت استفاده از رمزنگاری TLS-PSK. برای فعال‌سازی TLS-PSK باید گزینه --psk-identity نیز مشخص شود.

--psk-identity

شناسه کلاینت برای استفاده در پشتیبانی از TLS-PSK. در صورتی که کارگزار برای آن پیکربندی شده باشد، می‌توان از این مقدار به جای نام کاربری استفاده کرد.

-q, --qos

تعیین سطح کیفیت خدمات (Quality of Service) مورد نظر برای پیام‌های دریافتی، از میان ۰، ۱ و ۲. مقدار پیش‌فرض ۰ است. برای اطلاعات بیشتر درباره QoS به mqtt(7) مراجعه کنید.

سطح کیفیت خدمات برای تمام موضوعاتی که در یک نمونه واحد از این کلاینت مشترک شده‌اند اعمال می‌شود.

--quiet

با تعیین این آرگومان، هیچ خطای زمان اجرایی چاپ نخواهد شد. این موضوع پیام‌های خطای مربوط به ورودی نامعتبر کاربر را شامل نمی‌شود (مانند استفاده از --port بدون تعیین شماره پورت).

-R

در صورت ارائه این آرگومان، پیام‌های دریافتی که بیت نگهداری (retain) آن‌ها تنظیم شده باشد چاپ نخواهند شد. پیام‌های دارای بیت retain به اصطلاح «کهنه» (stale) هستند، به این معنی که مشخص نیست در ابتدا چه زمانی منتشر شده‌اند. هنگام اشتراک در یک موضوع دارای نویسه عام (wildcard)، ممکن است تعداد زیادی پیام نگه‌داری‌شده وجود داشته باشد. این آرگومان مانع از نمایش آن‌ها می‌شود.

همچنین ببینید: --retain-handling.

--random-filter

از این گزینه می‌توان برای کاهش نسبت پیام‌هایی که mosquitto_sub چاپ می‌کند استفاده کرد. رفتار پیش‌فرض چاپ تمامی پیام‌های دریافتی است. تنظیم chance به یک مقدار ممیز شناور بین 0.1 و 100.0 تضمین می‌کند که به طور میانگین همان درصد از پیام‌ها چاپ شوند.

--remove-retained

در صورت ارائه این آرگومان، هنگامی که mosquitto_sub پیامی را دریافت کند که بیت نگهداری (retain) آن تنظیم شده باشد، پیامی به کارگزار می‌فرستد تا آن پیام نگه‌داری‌شده را پاک کند. این مورد برای تمامی پیام‌های دریافتی به جز مواردی که با گزینه -T فیلتر شده‌اند اعمال می‌شود. این گزینه حتی در صورت استفاده از -R همچنان اثرگذار است. همچنین گزینه‌های --retain-as-published و --retained-only را مشاهده کنید.

مثال ۱.  پاک کردن تمام پیام‌های نگه‌داری‌شده روی سرور (به فرض داشتن دسترسی لازم برای این کار) و سپس خروج:

mosquitto_sub -t '#' --remove-retained --retained-only

مثال ۲.  پاک کردن تمام یک درخت موضوعی به استثنای یک موضوع واحد:

mosquitto_sub -t 'bbc/#' -T bbc/bbc1 --remove-retained

--retained-only

در صورت ارائه این آرگومان، تنها پیام‌های دریافتی که بیت نگهداری (retain) آن‌ها تنظیم شده باشد چاپ می‌شوند. پیام‌های دارای بیت retain به اصطلاح «کهنه» (stale) هستند، به این معنی که مشخص نیست در ابتدا چه زمانی منتشر شده‌اند. با استفاده از این آرگومان، دریافت نخستین پیام غیرکهنه باعث خروج کلاینت از برنامه خواهد شد. همچنین گزینه --retain-as-published را مشاهده کنید.

--retain-as-published

در صورت ارائه این آرگومان، اشتراک‌ها دارای گزینه «نگهداری همان‌طور که منتشر شده» (retain as published) خواهند بود. این بدان معنی است که پرچم retain در پیام دریافتی دقیقاً همان چیزی خواهد بود که توسط کلاینت منتشرکننده تنظیم شده است، به جای اینکه نشان‌دهنده تازه یا کهنه بودن پیام باشد.

این گزینه برای کلاینت‌های پروتکل MQTT نسخه‌های v3.1 و v3.1.1 معتبر نیست.

--retain-handling always | new | never

از نسخه ۲.۱ در دسترس است.

استفاده از این گزینه برای کنترل نحوه مدیریت پیام‌های نگه‌داری‌شده هنگام برقراری اشتراک است. این گزینه مشخص می‌کند که تحت چه شرایطی پیام‌های نگه‌داری‌شده موجود در هنگام ایجاد اشتراک به کلاینت تحویل داده شوند.

•always - همیشه پیام‌های نگه‌داری‌شده تحویل داده شوند
•new - پیام‌های نگه‌داری‌شده تنها در اولین باری که اشتراک ایجاد می‌شود تحویل داده شوند، اما در اشتراک‌های بعدی تحویل داده نشوند. این ویژگی برای مواردی مناسب است که کلاینتی طولانی‌مدت با نشست غیرتمیز (non-clean session) اجرا می‌شود. اگر اتصال برای مدت کوتاهی قطع شود، هنگام اتصال مجدد کلاینت، پیام‌های نگه‌داری‌شده دوباره دریافت نخواهند شد.
•never - هرگز پیام‌های نگه‌داری‌شده تحویل داده نشوند

-S

استفاده از جستجوهای رکوردهای SRV در DNS برای تعیین میزبان مقصد جهت اتصال. در صورت استفاده به همراه -h جستجو را روی _mqtt._tcp.<host> انجام می‌دهد؛ در غیر این صورت از _mqtt._tcp.<local dns domain> استفاده می‌کند.

-t, --topic

موضوع (topic) در MQTT برای اشتراک در آن. برای اطلاعات بیشتر درباره موضوعات MQTT به mqtt(7) مراجعه کنید.

این گزینه را می‌توان برای اشتراک در چندین موضوع تکرار کرد.

-T, --filter-out

جلوگیری از چاپ موضوعاتی که با فیلتر مطابقت دارند. این امکان اشتراک در یک موضوع دارای نویسه عام (wildcard) و چاپ تنها بخشی از ساختار سلسله‌مراتبی آن را فراهم می‌سازد.

برای مثال، اشتراک در شاخه BBC، ولی عدم چاپ خروجی‌های مربوط به Radio 3:

•mosquitto_sub -t bbc/# -T bbc/radio3

این گزینه را می‌توان برای فیلتر کردن چندین موضوع یا شاخه موضوعی تکرار کرد.

--tls-alpn

تعیین پروتکل مورد استفاده هنگام اتصال به کارگزاری که چندین پروتکل را روی یک پورت ارائه می‌دهد (مانند MQTT و WebSockets).

--tls-engine

شناسه یک موتور معتبر OpenSSL (موتور رمزنگاری). این موارد را می‌توان با دستور openssl engine فهرست کرد.

همچنین ببینید: --keyform.

--tls-engine-kpass-sha1

هش SHA1 گذرواژه کلید خصوصی در هنگام استفاده از یک موتور TLS. برخی از موتورهای TLS مانند موتور TPM ممکن است برای دسترسی به گذرواژه نیاز داشته باشند. این گزینه امکان ارسال مستقیم هش 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

در صورت استفاده، گواهی‌های مرجع گواهی (CA) ارائه‌شده توسط سیستم‌عامل بارگذاری و مورد اعتماد قرار می‌گیرند. این گزینه می‌تواند در ترکیب با --cafile و --capath یا به تنهایی برای فعال کردن حالت TLS استفاده شود. در صورتی که از -L mqtts://... استفاده شود یا پورت برابر با ۸۸۸۳ باشد و هیچ گزینه گواهی دیگری تعیین نشده باشد، این گزینه به صورت پیش‌فرض فعال خواهد بود.

--tls-version

انتخاب نسخه پروتکل TLS مورد استفاده هنگام برقراری ارتباط با کارگزار. گزینه‌های معتبر شامل tlsv1.3 و tlsv1.2 هستند. مقدار پیش‌فرض tlsv1.2 است. این مقدار باید با نسخه پروتکل مورد استفاده کارگزار مطابقت داشته باشد.

-u, --username

تعیین نام کاربری برای احراز هویت در کارگزار.

همچنین آرگومان --pw را مشاهده کنید.

--unix

اتصال به کارگزار از طریق سوکت محلی دامنه یونیکس (unix domain socket) به جای سوکت TCP. این گزینه جایگزینی برای -h و -L است؛ به عنوان مثال: mosquitto_pub --unix /tmp/mosquitto.sock ...

برای پیکربندی Mosquitto جهت گوش دادن روی سوکت یونیکس، گزینه socket_domain در mosquitto.conf(5) را بررسی کنید.

-U, --unsubscribe

موضوعی که اشتراک از آن لغو می‌شود. این گزینه می‌تواند به تنهایی یا در ترکیب با گزینه --topic استفاده شود و تنها هنگام استفاده همراه با --clean-session (یا زمانی که نشست پایدار است) معنا دارد.

در صورت استفاده هم‌زمان با --topic اشتراک‌ها پیش از لغو اشتراک‌ها پردازش خواهند شد.

توجه داشته باشید که تنها لغو اشتراک از اشتراک‌هایی که قبلاً ثبت شده‌اند امکان‌پذیر است. ایجاد شکاف یا استثنا در اشتراک‌های با نویسه عام (wildcard) ممکن نیست. برای مثال، اشتراک در sensors/# و سپس لغو اشتراک از sensors/+/temperature به شکلی که در زیر نشان داده شده، همچنان باعث تحویل پیام‌های منطبق با sensors/+/temperature به کلاینت خواهد شد:

•mosquitto_sub -t sensors/# -U sensors/+/temperature -v

همچنین توجه داشته باشید از آنجا که پیام‌های نگه‌داری‌شده بلافاصله پس از دریافت دستور SUBSCRIBE توسط کارگزار منتشر می‌شوند، اشتراک و لغو اشتراک در همان موضوع ممکن است منجر به دریافت پیام‌ها توسط کلاینت شود.

این گزینه را می‌توان برای لغو اشتراک از چندین موضوع تکرار کرد.

-v, --verbose

چاپ مشروح پیام‌های دریافتی. با این آرگومان، پیام‌ها به صورت «topic payload» چاپ می‌شوند. در صورت عدم تعیین این آرگومان، پیام‌ها فقط به صورت «payload» چاپ می‌شوند.

همچنین ببینید: -F.

-V, --protocol-version

تعیین نسخه پروتکل MQTT مورد استفاده هنگام اتصال به کارگزار راه دور. می‌تواند مقادیر 5، 311، 31، یا حالت‌های طولانی‌تر mqttv5، mqttv311 یا mqttv31 باشد. مقدار پیش‌فرض 311 است.

-W

تعیین مهلت زمانی (timeout) به عنوان یک عدد صحیح بر حسب ثانیه. پس از سپری شدن این تعداد ثانیه، کلاینت پردازش پیام‌ها را متوقف کرده و اتصال را قطع می‌کند. این زمان‌سنج دقیقاً پس از اتصال کلاینت به کارگزار آغاز می‌شود.

-w, --watch

از نسخه ۲.۱ در دسترس است.

پیام‌ها بر روی شماره خط ثابتی بر اساس موضوع و ترتیبی که موضوعات دریافت می‌شوند چاپ خواهند شد. این ویژگی برای نظارت بر چندین موضوع که دارای محتوای تک‌خطی هستند مفید است. اگر تعداد موضوعات بیش از تعداد خطوط ترمینال باشد یا محتوای پیام بیش از یک خط را اشغال کند، رفتارهای پیش‌بینی‌نشده‌ای رخ خواهد داد. این گزینه را می‌توان همراه با سایر گزینه‌های خروجی مانند -F استفاده کرد.

نیازمند پشتیبانی از کدهای گریز ANSI در ترمینال است.

--will-payload

مشخص کردن پیامی که توسط کارگزار ذخیره می‌شود و در صورت قطع ناگهانی و غیرمنتظره اتصال این کلاینت ارسال خواهد شد. این گزینه باید همراه با --will-topic استفاده شود.

--will-qos

سطح کیفیت خدمات (QoS) برای پیام وصیت (Will). مقدار پیش‌فرض ۰ است. این گزینه باید همراه با --will-topic استفاده شود.

--will-retain

در صورت تعیین، اگر اتصال کلاینت به طور غیرمنتظره قطع شود، پیام ارسالی به عنوان یک پیام نگهداری‌شده (retained) تلقی خواهد شد. این گزینه باید همراه با --will-topic استفاده شود.

--will-topic

موضوعی (topic) که در صورت قطع ناگهانی و غیرمنتظره اتصال کلاینت، پیام وصیت روی آن ارسال می‌شود.

--ws

برقراری اتصال با استفاده از وب‌سوکت (WebSockets) به جای TCP ساده.

-x

تنظیم ویژگی session-expiry-interval در بسته CONNECT. در صورت استفاده از این گزینه، کلاینت به عنوان کلاینت MQTT نسخه ۵ تنظیم خواهد شد. عددی بین 0 تا 4294967294 تعیین می‌کند که نشست پس از قطع اتصال کلاینت تا چند ثانیه معتبر بماند، یا برای نشستی که هرگز منقضی نمی‌شود از مقادیر -1، 4294967295 یا ∞ استفاده کنید. در صورت ارائه گزینه -c مقدار پیش‌فرض -1 و در غیر این صورت 0 خواهد بود.

اگر نشست با استفاده از -x یا -c طوری تنظیم شود که هرگز منقضی نشود، باید شناسه کلاینت مشخص گردد.

سه روش برای قالب‌بندی خروجی چاپ‌شده وجود دارد. در تمام حالت‌ها، به ازای هر پیام دریافتی یک نویسه خط جدید (newline) اضافه می‌شود مگر اینکه آرگومان -N تعیین شده باشد.

قالب «فقط بدنه» (Payload-only) حالت پیش‌فرض خروجی است و بدنه پیام را دقیقاً همان‌طور که دریافت شده است چاپ می‌کند.

حالت پرحجم (Verbose) با -v فعال می‌شود و موضوع و بدنه پیام را با یک فاصله (space) میان آن‌ها چاپ می‌کند.

گزینه پایانی، خروجی قالب‌بندی‌شده است که به کاربر اجازه می‌دهد قالب خروجی سفارشی تعریف کند. این رفتار با گزینه -F format-string کنترل می‌شود. رشته قالب، یک رشته متنی آزاد است که در آن دنباله‌های تفسیرشده با پارامترهای مختلف جایگزین می‌شوند. دنباله‌های تفسیرشده در دسترس در زیر توضیح داده شده‌اند.

سه نویسه برای شروع یک دنباله تفسیرشده به کار می‌روند: %، @ و \. دنباله‌هایی که با % شروع می‌شوند یا پارامترهای مربوط به پیام MQTT در حال چاپ هستند، یا دنباله‌های کمکی هستند که به عنوان مثال نیاز به نوشتن رشته‌های طولانی قالب تاریخ را برطرف می‌کنند. دنباله‌هایی که با @ شروع می‌شوند به تابع strftime(3) ارسال می‌گردند (با جایگزین شدن @ با % - توجه داشته باشید که تنها نویسه بلافاصله پس از @ به strftime ارسال می‌شود). این امکان ساخت انواع مختلفی از خروجی‌های مبتنی بر زمان را فراهم می‌کند. گزینه‌های خروجی strftime از پلتفرمی به پلتفرم دیگر متفاوت است، بنابراین گزینه‌های در دسترس پلتفرم خود را بررسی کنید. یک افزونه برای strftime ارائه شده است که @N می‌باشد و می‌توان از آن برای دریافت تعداد نانوثانیه‌های سپری‌شده در ثانیه جاری استفاده کرد. دقت این گزینه بسته به پلتفرم متفاوت است. نویسه دنباله پایانی \ است که برای وارد کردن برخی نویسه‌ها استفاده می‌شود که در غیر این صورت وارد کردن آن‌ها دشوار خواهد بود.

پارامترهای %A، %C، %d، %E، %F، %f، %I، %l، %m، %p، %R، %S، %t، %x و %X می‌توانند پرچم‌های اختیاری بلافاصله پس از نویسه % داشته باشند.

0

مقدار باید با صفر پر شود (zero-padded). این پرچم برای پارامترهای %A، %E، %d، %F، %f، %l، %m، %S، %X و %x اعمال می‌شود و برای سایر پارامترها نادیده گرفته خواهد شد. در صورت استفاده با پرچم -، پرچم 0 نادیده گرفته می‌شود.

-

مقدار به سمت چپِ عرض فیلد تراز می‌شود و با فاصله‌های خالی پر خواهد شد. حالت پیش‌فرض تراز به راست با پر کردن توسط ۰ یا فاصله خالی است.

برخی از پارامترهای مربوط به MQTT را می‌توان با گزینه‌ای برای تنظیم عرض فیلد آن‌ها به روشی مشابه با قالب‌های معمول سبک printf قالب‌بندی کرد، یعنی این مقدار حداقل عرض را هنگام چاپ این پارامتر تعیین می‌کند. اگر طول خروجی کمتر از این عرض باشد، فیلد برای رسیدن به این عرض پر می‌شود. این مورد برای گزینه‌های %A، %C، %d، %E، %F، %f، %I، %l، %m، %p، %R، %S، %t، %x و %X اعمال می‌شود.

برای مثال %10t حداقل عرض فیلد موضوع را روی ۱۰ نویسه تنظیم می‌کند.

برخی از پارامترهای مربوط به MQTT را می‌توان با گزینه‌ای برای تعیین حداکثر عرض فیلد به شیوه‌ای مشابه قالب‌های سبک printf قالب‌بندی کرد، به عنوان مثال %.20t برای حداکثر عرض ۲۰ نویسه. این مورد برای گزینه‌های %C، %I، %R و %t اعمال می‌شود.

برای مثال %10.10t حداقل عرض فیلد موضوع را روی ۱۰ نویسه و حداکثر عرض آن را روی ۱۰ نویسه تنظیم می‌کند، یعنی فیلد همیشه دقیقاً دارای طول ۱۰ نویسه خواهد بود.

پارامترهای %x و %X به طور پیش‌فرض بدنه پیام را به صورت یک رشته هگزادسیمال واحد خروجی می‌دهند. همچنین امکان تقسیم بدنه هگزادسیمال به فیلدهایی با طول دلخواهی از نیم‌بایت‌ها (nibbles) وجود دارد. برای مثال، %.2x بدنه را به مقادیر دو نیم‌بایتی (یک بایتی) جداشده با فاصله تقسیم می‌کند و ممکن است خروجی‌ای مانند 18 83 تولید کند.

نویسه جداکننده به طور پیش‌فرض فاصله است، اما می‌توان آن را با افزودن یکی از نویسه‌های !"#$&'()*+,-./:;<=>?@[\]^_`{|}~ پس از عرض فیلد دودویی تغییر داد. برای مثال %.2:x ممکن است خروجی‌ای مانند 18:83 تولید کند.

قالب خروجی فقط از استاندارد ممیز شناور IEEE 754 مطابق آنچه در پیوست F از ISO/IEC 9899:1999 شرح داده شده پشتیبانی می‌کند. اگر پلتفرم منتشرکننده از استاندارد نمایش ممیز شناور دیگری غیر از IEEE 754 استفاده می‌کند از %f یا %d استفاده نکنید، در غیر این صورت داده‌های نامعتبر دریافت خواهید کرد. اگر مطمئن نیستید پلتفرم شما از چه نمایشی برای ممیز شناور استفاده می‌کند، به احتمال بسیار زیاد IEEE 754 است. اگر مقادیر ناقص یا غیرمنتظره‌ای دریافت کردید، بررسی کنید که آیا عدد ممیز شناور در بدنه پیام ارسالی از منتشرکننده با IEEE 754 کدگذاری شده است یا خیر.

اگر قصد چاپ اعداد اعشاری شناور را دارید، اطمینان حاصل کنید که تنها در موضوعاتی مشترک می‌شوید که صرفاً مقادیر ممیز شناور قالب‌بندی‌شده با IEEE 754 ارسال می‌کنند. پردازش در مورد اعداد ممیز شناور بسیار سخت‌گیرانه است و اگر داده‌ای دریافت شود که عدد ممیز شناور نباشد، یک پیام خطا چاپ خواهد شد.

•%% یک نویسه لفظی %.
•%A ویژگی topic-alias در MQTT نسخه ۵، در صورت وجود.
•%C ویژگی content-type در MQTT نسخه ۵، در صورت وجود.
•%D ویژگی correlation-data در MQTT نسخه ۵، در صورت وجود. توجه داشته باشید که این ویژگی به عنوان داده دودویی مشخص شده است، بنابراین ممکن است نویسه‌های غیرقابل‌چاپ تولید کند.
•%d بدنه پیام که به عنوان عدد اعشاری شناور ۸ بایتی IEEE 754 (double) در نظر گرفته می‌شود.
•%E ویژگی message-expiry-interval در MQTT نسخه ۵، در صورت وجود.
•%F ویژگی payload-format-indicator در MQTT نسخه ۵، در صورت وجود.
•%f بدنه پیام که به عنوان عدد اعشاری شناور ۴ بایتی IEEE 754 در نظر گرفته می‌شود.
•%l طول بدنه پیام بر حسب بایت.
•%m شناسه پیام (فقط برای پیام‌های با QoS>0 معنادار است).
•%P ویژگی user-property در MQTT نسخه ۵، در صورت وجود. این مقدار به صورت key:value چاپ می‌شود. ممکن است هر تعداد ویژگی کاربری به یک پیام متصل باشد و کلیدهای تکراری وجود داشته باشند.
•%p بایت‌های خام بدنه پیام (بسته به بدنه ممکن است نویسه‌های غیرقابل‌چاپ تولید کند).
•%q سطح کیفیت خدمات (QoS) پیام.
•%R ویژگی response-topic در MQTT نسخه ۵، در صورت وجود.
•%r پرچم نگهداری (retain) برای پیام.
•%S ویژگی subscription-identifier در MQTT نسخه ۵، در صورت وجود.
•%t موضوع پیام.
•%x بدنه پیام با هر بایت به صورت عدد هگزادسیمال (حروف کوچک).
•%X بدنه پیام با هر بایت به صورت عدد هگزادسیمال (حروف بزرگ).

•%I تاریخ و زمان با فرمت ISO-8601، مانند 2016-08-10T09:47:38+0100
•%j خروجی JSON از پارامترهای پیام و مهر زمان، با بدنه در داخل نقل‌قول و کاراکترهای گریز. به عنوان مثال {"tst":"2020-05-06T22:12:00.000000+0100","topic":"greeting","qos":0,"retain":0,"payload":"hello world"}
•%J خروجی JSON از پارامترهای پیام و مهر زمان، بدون نقل‌قول و بدون کاراکترهای گریز برای بدنه - این یعنی خود بدنه باید JSON معتبر باشد. به عنوان مثال: {"tst":"2020-05-06T22:12:00.000000+0100","topic":"foo","qos":0,"retain":0,"payload":{"temperature":27.0,"humidity":57}}.

اگر بدنه پیام JSON معتبر نباشد، پیام خطای "Error: Message payload is not valid JSON on topic <topic>" در stderr چاپ خواهد شد.

•%U مهر زمانی یونیکس با نانوثانیه، مانند 1470818943.786368637
•@@ یک نویسه لفظی @.
•@X ارسال نویسه نشان‌داده‌شده توسط X به تابع strftime به عنوان %X. گزینه‌های پشتیبانی‌شده وابسته به پلتفرم هستند.
•@N تعداد نانوثانیه‌های سپری‌شده در ثانیه جاری، با دقت زمانی متغیر بسته به پلتفرم.

•\\ یک نویسه لفظی \.
•\0 یک نویسه تهی (null character). می‌تواند برای جداسازی پارامترهای مختلف که ممکن است حاوی فاصله باشند (مانند topic، payload) استفاده شود تا پردازش با ابزارهایی مانند xargs(1) ساده‌تر شود.
•\a هشدار/زنگ (alert/bell).
•\e دنباله گریز (escape sequence)، که می‌تواند با کدهای رنگی ANSI برای ارائه خروجی رنگی به کار رود.
•\n انتهای خط (newline).
•\r بازگشت مکان‌نما (carriage return).
•\t برگه افقی (horizontal tab).
•\v برگه عمودی (vertical tab).

کلاینت می‌تواند پیامی را نزد کارگزار ثبت کند تا در صورت قطع اتصال غیرمنتظره، به صورت خودکار ارسال شود. برای اطلاعات بیشتر به mqtt(7) مراجعه کنید.

حداقل نیاز برای این ویژگی، استفاده از --will-topic جهت تعیین موضوعی است که پیام وصیت باید روی آن ارسال شود. این کار منجر به ارسال پیامی با طول صفر، بدون نگهداری (non-retained) و با سطح QoS 0 خواهد شد.

از آرگومان‌های --will-retain، --will-payload و --will-qos برای تغییر سایر پارامترهای وصیت استفاده کنید.

گزینه -D / --property امکان افزودن ویژگی‌ها را در مراحل مختلف اجرای mosquitto_sub فراهم می‌کند. ویژگی‌های پشتیبانی‌شده برای هر دستور به شرح زیر است:

•authentication-data (داده دودویی - توجه: به عنوان رشته رفتار می‌شود)
•authentication-method (جفت‌رشته UTF-8)
•maximum-packet-size (عدد صحیح بی‌علامت ۳۲ بیتی)
•receive-maximum (عدد صحیح بی‌علامت ۱۶ بیتی)
•request-problem-information (عدد صحیح بی‌علامت ۸ بیتی)
•request-response-information (عدد صحیح بی‌علامت ۸ بیتی)
•session-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی؛ توجه: به جای آن از -x استفاده کنید)
•topic-alias-maximum (عدد صحیح بی‌علامت ۱۶ بیتی)
•user-property (جفت‌رشته UTF-8)

•user-property (جفت‌رشته UTF-8)

•user-property (جفت‌رشته UTF-8)

•session-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی)
•user-property (جفت‌رشته UTF-8)

•content-type (رشته UTF-8)
•correlation-data (داده دودویی - توجه: به عنوان رشته رفتار می‌شود)
•message-expiry-interval (عدد صحیح بی‌علامت ۳۲ بیتی)
•payload-format-indicator (عدد صحیح بی‌علامت ۸ بیتی)
•response-topic (رشته UTF-8)
•user-property (جفت‌رشته UTF-8)
•will-delay-interval (عدد صحیح بی‌علامت ۳۲ بیتی)

در صورت موفقیت مقدار صفر و در صورت بروز خطا مقداری غیر صفر بازگردانده می‌شود. اگر اتصال توسط کارگزار در سطح MQTT رد شود، کد خروج همان کد دلیل CONNACK خواهد بود. در صورت بروز هر خطای دیگری، کد خروج مقدار بازگشتی libmosquitto است.

کدهای CONNACK در MQTT نسخه v3.1.1:

•0 موفقیت‌آمیز (Success)
•1 اتصال رد شد: نسخه پروتکل نامعتبر است (Connection refused: Bad protocol version)
•2 اتصال رد شد: شناسه پذیرفته نشد (Connection refused: Identifier rejected)
•3 اتصال رد شد: سرور در دسترس نیست (Connection refused: Server unavailable)
•4 اتصال رد شد: نام کاربری یا گذرواژه نادرست است (Connection refused: Bad username/password)
•5 اتصال رد شد: فاقد مجوز (Connection refused: Not authorized)

کدهای CONNACK در MQTT نسخه v5:

•0 موفقیت‌آمیز (Success)
•128 خطای نامشخص (Unspecified error)
•129 بسته ناقص یا بدشکل (Malformed packet)
•130 خطای پروتکل (Protocol error)
•131 خطای وابسته به پیاده‌سازی (Implementation specific error)
•132 نسخه پروتکل پشتیبانی نمی‌شود (Unsupported protocol version)
•133 شناسه کلاینت نامعتبر است (Client ID not valid)
•134 نام کاربری یا گذرواژه نادرست است (Bad username or password)
•135 فاقد مجوز (Not authorized)
•136 سرور در دسترس نیست (Server unavailable)
•137 سرور مشغول است (Server busy)
•138 مسدود شده (Banned)
•139 سرور در حال خاموش شدن است (Server shutting down)
•140 روش احراز هویت نادرست است (Bad authentication method)
•141 پایان مهلت زنده ماندن (Keep alive timeout)
•142 نشست توسط اتصال دیگری تصاحب شد (Session taken over)
•143 فیلتر موضوع نامعتبر است (Topic filter invalid)
•144 نام موضوع نامعتبر است (Topic name invalid)
•147 سقف دریافت رد شد (Receive maximum exceeded)
•148 نام مستعار موضوع نامعتبر است (Topic alias invalid)
•149 بسته بیش از حد بزرگ است (Packet too large)
•148 نرخ ارسال پیام بیش از حد بالاست (Message rate too high)
•151 سهمیه مصرف تمام شده است (Quota exceeded)
•152 اقدام مدیریتی (Administrative action)
•153 قالب داده بدنه نامعتبر است (Payload format invalid)
•154 نگهداری پیام پشتیبانی نمی‌شود (Retain not supported)
•155 سطح کیفیت خدمات پشتیبانی نمی‌شود (QoS not supported)
•156 از سرور دیگری استفاده کنید (Use another server)
•157 سرور منتقل شده است (Server moved)
•158 اشتراک‌های هم‌رسان پشتیبانی نمی‌شود (Shared subscriptions not supported)
•159 نرخ برقراری اتصال بیش از حد مجاز است (Connection rate exceeded)
•160 حداکثر زمان مجاز اتصال (Maximum connect time)
•161 شناسه‌های اشتراک پشتیبانی نمی‌شوند (Subscription IDs not supported)
•162 اشتراک‌های با نویسه عام پشتیبانی نمی‌شوند (Wildcard subscriptions not supported)

سایر کدها (Other codes):

•27 پایان مهلت زمانی انتظار برای دریافت پیام (Timed out waiting for message)

توجه داشته باشید که این موارد صرفاً مثال هستند - اگر دستورات را همان‌طور که نشان داده شده است اجرا کنید، اشتراک‌ها برقرار خواهند شد، اما برای دریافت هرگونه پیام باید چیزی در حال انتشار پیام روی آن موضوعات باشد.

اشتراک در اطلاعات دما روی localhost با کیفیت خدمات QoS 1:

•mosquitto_sub -t sensors/temperature -q 1

اشتراک در به‌روزرسانی‌های دمای دیسک سخت روی چندین ماشین/دیسک سخت. این دستور انتظار دارد هر ماشین دمای دیسک سخت خود را روی موضوع sensors/machines/HOSTNAME/temperature/HD_NAME منتشر کند:

•mosquitto_sub -t sensors/machines/+/temperature/+

اشتراک در تمام پیام‌های وضعیت کارگزار:

•mosquitto_sub -v -t \$SYS/#

تعیین قالب خروجی به صورت "ISO-8601 date : topic : payload in hex":

•mosquitto_sub -F '@Y-@m-@dT@H:@M:@S@z : %t : %x' -t '#'

تعیین قالب خروجی به صورت "seconds since epoch.nanoseconds : retained flag : qos : mid : payload length":

•mosquitto_sub -F '%@s.@N : %r : %q : %m : %l' -q 2 -t '#'

خروجی موضوع و بدنه پیام، با رنگ‌بندی در ترمینال‌هایی که پشتیبانی می‌کنند:

•mosquitto_sub -F '\e[92m%t \e[96m%p\e[0m' -q 2 -t '#'

$XDG_CONFIG_HOME/mosquitto_sub, $HOME/.config/mosquitto_sub, $HOME/snap/mosquitto/current/.config/mosquitto_sub (برای نسخه‌های نصب‌شده از طریق snap)

فایل پیکربندی برای گزینه‌های پیش‌فرض.

اطلاعات مربوط به اشکالات mosquitto را می‌توانید در نشانی زیر بیابید: https://github.com/eclipse-mosquitto/mosquitto/issues

mosquitto(7), mqtt(7), mosquitto_pub(1), mosquitto_rr(1), mosquitto(8), libmosquitto(3), mosquitto-tls(7)

Roger Light <roger@atchoo.org>

04/03/2026 Mosquitto Project