Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MOSQUITTO_SUB(1)		   Commands		      MOSQUITTO_SUB(1)

NAME
       mosquitto_sub - an MQTT version 5/3.1.1/3.1 client for subscribing to
       topics

SYNOPSIS

       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]

DESCRIPTION
       mosquitto_sub is	a simple MQTT version 5/3.1.1 client that will
       subscribe to topics and print the messages that it receives.

       In addition to subscribing to topics, mosquitto_sub can filter out
       received	messages so they are not printed (see the -T option) or
       unsubscribe from	topics (see the	-U option). Unsubscribing from topics
       is useful for clients connecting	with clean session set to false.

ENCRYPTED CONNECTIONS
       This client supports TLS	encrypted connections. It is strongly
       recommended that	you use	an encrypted connection	for anything more than
       the most	basic setup.

       To enable TLS connections when using x509 certificates, one of either
       --cafile	or --capath can	be provided as an option.

       Alternatively, if the -p	8883 option is used then the OS	provided
       certificates will be loaded and neither --cafile	or --capath are
       needed.

       To enable TLS connections when using TLS-PSK, you must use the --psk
       and the --psk-identity options.

OPTIONS
       There are three ways to provide options to mosquitto_sub: the default
       config file, a specified	config file, or	options	on the command line.

   Default Config File
       The default config file is located at $XDG_CONFIG_HOME/mosquitto_sub or
       $HOME/.config/mosquitto_sub on POSIX systems, or
       %USERPROFILE%\mosquitto_sub on Windows.

       The contents of the config file should consist of options, one per line
       in the format: -option value. If	options	are also specified on the
       command line, those options will	override the same options set in the
       config file. The	exceptions to this are the message type	options, of
       which only one can be specified.	Note also that currently some options
       cannot be negated, e.g.	-S. TLS	encryption options can be negated with
       the --no-tls option.

       Config file lines that have a # as the first character are treated as
       comments	and not	processed any further.

       It is suggested that config files are primarily used for	authentication
       purposes. Use of	a config file allows you to authenticate without the
       need to show the	username and password on the command line.

   Config File
       Available from version 2.1.

       A config	file can be specified on the command line using	-o
       config-file. If the -o option is	used, the default config file will not
       be loaded.

       The format is the same as for the default config	file.

   The options
       -A
	   Bind	the outgoing connection	to a local ip address/hostname.	Use
	   this	argument if you	need to	restrict network communication to a
	   particular interface.

       -c, --disable-clean-session
	   Disable 'clean session' / enable persistent client mode. When this
	   argument is used, the broker	will be	instructed not to clean
	   existing sessions for the same client id when the client connects,
	   and sessions	will never expire when the client disconnects. MQTT v5
	   clients can change their session expiry interval with the -x
	   argument.

	   When	a session is persisted on the broker, the subscriptions	for
	   the client will be maintained after it disconnects, along with
	   subsequent QoS 1 and	QoS 2 messages that arrive. When the client
	   reconnects and does not clean the session, it will receive all of
	   the queued messages.

	   If using this option, the client id must be set manually with --id.

       --cafile
	   Define the path to a	file containing	PEM encoded CA certificates
	   that	are trusted. Used to enable SSL	communication.

	   See also --capath

       --capath
	   Define the path to a	directory containing PEM encoded CA
	   certificates	that are trusted. Used to enable SSL communication.

	   For --capath	to work	correctly, the certificate files must have
	   ".crt" as the file ending and you must run "openssl rehash <path to
	   capath>" each time you add/remove a certificate.

	   See also --cafile

       --cert
	   Define the path to a	file containing	a PEM encoded certificate for
	   this	client,	if required by the server.

	   See also --key and the Encrypted Connections	section.

       --ciphers
	   An openssl compatible list of TLS ciphers to	support	in the client.
	   See ciphers(1) for more information.

       -C
	   Disconnect and exit the program immediately after the given count
	   of messages have been received. This	may be useful in shell scripts
	   where on a single status value is required, for example.

	   Combine with	-R or --retain-handling	never to print only the	first
	   set of fresh	messages (i.e. that does not have the retained flag
	   set), or with -T to filter which topics are processed.

       -d, --debug
	   Enable debug	messages.

       -D, --property
	   Set MQTT v5 properties for with this	client.	If you use this
	   option, the client will be set to be	an MQTT	v5 client. This	option
	   has two forms:

	   -D command identifier value

	   -D command identifier name value

	   command is the MQTT command/packet identifier and can be one	of
	   CONNECT, PUBLISH, PUBACK, PUBREC, PUBCOMP, SUBSCRIBE, UNSUBSCRIBE,
	   DISCONNECT, AUTH, or	WILL. The properties available for each
	   command are listed in the Properties	section.

	   identifier is the name of the property to add. This is as described
	   in the specification, but with '-' as a word	separator. For
	   example: payload-format-indicator. More details are in the
	   Properties section.

	   value is the	value of the property to add, with a data type that is
	   property specific.

	   name	is only	used for the user-property property as the first of
	   the two strings in the string pair. In that case, value is the
	   second of the strings in the	pair.

       -E
	   If this option is given, mosquitto_sub will exit immediately	that
	   all of its subscriptions have been acknowledged by the broker. In
	   conjunction with -c this allows a durable client session to be
	   initialised on the broker for future	use without requiring any
	   messages to be received.

       -F
	   Specify output printing format. This	option allows you to choose
	   what	information from each message is printed to the	screen.	See
	   the Output Format section below for full details.

	   This	option overrides the -v	option,	but does not override the -N
	   option.

       --help
	   Display usage information.

       -h, --host
	   Specify the host to connect to. Defaults to localhost.

       -i, --id
	   The id to use for this client. If not given,	a client id will be
	   generated depending on the MQTT version being used. For
	   v3.1.1/v3.1,	the client generates a client id in the	format
	   mosq-XXXXXXXXXXXXXXXXXX, where the X	are replaced with random
	   alphanumeric	characters. For	v5.0, the client sends a zero length
	   client id, and the server will generate a client id for the client.

       -I, --id-prefix
	   Provide a prefix that the client id will be built from by appending
	   the process id of the client. This is useful	where the broker is
	   using the clientid_prefixes option. Cannot be used at the same time
	   as the --id argument.

       --insecure
	   When	using certificate based	encryption, this option	disables
	   verification	of the server hostname in the server certificate. This
	   can be useful when testing initial server configurations but	makes
	   it possible for a malicious third party to impersonate your server
	   through DNS spoofing, for example. Use this option in testing only.
	   If you need to resort to using this option in a production
	   environment,	your setup is at fault and there is no point using
	   encryption.

       -k, --keepalive
	   The number of seconds between sending PING commands to the broker
	   for the purposes of informing it we are still connected and
	   functioning.	Defaults to 60 seconds.

       --key
	   Define the path to a	file containing	a PEM encoded private key for
	   this	client,	carrying out mutual TLS	with the server.

	   See also --cert and the Encrypted Connections section.

       --keyform
	   Specifies the type of private key in	use when making	TLS
	   connections.. This can be "pem" or "engine".	This parameter is
	   useful when a TPM module is being used and the private key has been
	   created with	it. Defaults to	"pem", which means normal private key
	   files are used.

	   See also --tls-engine.

       -L, --url
	   Specify specify user, password, hostname, port and topic at once as
	   a URL. The URL must be in the form:
	   mqtt(s)://[username[:password]@]host[:port]/topic or
	   ws(s)://[username[:password]@]host[:port]/path

	   Depending on	the scheme, the	port will default to different values.
	   mqtt:// - 1883, mqtts:// - 8883, ws:// - 80,	wss:// - 443.

       --message-rate
	   Available from version 2.1.

	   Instead of printing the messages received, print a count of the
	   messages received at	one second intervals. Other options related to
	   output formatting are not valid when	this option is active.

       -N
	   Do not append an end	of line	character to the payload when
	   printing. This allows streaming of payload data from	multiple
	   messages directly to	another	application unmodified.	Only really
	   makes sense when not	using -v.

       --nodelay
	   Disable Nagle's algorithm for the socket. This means	that latency
	   of sent messages is reduced,	which is particularly noticeable for
	   small, reasonably infrequent	messages. Using	this option may	result
	   in more packets being sent than would normally be necessary.

       --no-tls
	   Available from version 2.1.

	   Disable all use of TLS encryption. This is useful if	you specify
	   TLS options in a configuration file but want	to disable those
	   options. It also stops the automatic	use of TLS when	connecting to
	   port	8883.

       -o config-file
	   Available from version 2.1.

	   Load	options	from a config file. See	the Default Config File	and
	   Config File sections	at the start of	the Options section.

       -p, --port
	   Connect to the port specified. If not given,	the default of 1883
	   for plain MQTT or 8883 for MQTT over	TLS will be used.

       -P, --pw
	   Provide a password to be used for authenticating with the broker.
	   Using this argument without also specifying a username is invalid
	   when	using MQTT v3.1	or v3.1.1.

	   See also the	--username option.

       --pretty
	   When	using the JSON output format %j	or %J, the default is to print
	   in an unformatted fashion. Specifying --pretty prints messages in a
	   prettier, more human	readable format.

       --proxy
	   Specify a SOCKS5 proxy to connect through. "None" and "username"
	   authentication types	are supported. The socks-url must be of	the
	   form	socks5h://[username[:password]@]host[:port]. The protocol
	   prefix socks5h means	that hostnames are resolved by the proxy. The
	   symbols %25,	%3A and	%40 are	URL decoded into %, : and @
	   respectively, if present in the username or password.

	   If username is not given, then no authentication is attempted. If
	   the port is not given, then the default of 1080 is used.

	   If the host is given	as an IPv6 address, it must be enclosed	in
	   square brackets, e.g.  socks5h://[::1]:1080.	Note that square
	   brackets have special meaning in some shells, so the	proxy url may
	   need	quoting	in double or single quotes.

	   More	SOCKS versions may be available	in the future, depending on
	   demand, and will use	different protocol prefixes as described in
	   curl(1).

       --psk
	   Provide the hexadecimal (no leading 0x) pre-shared-key matching the
	   one used on the broker to use TLS-PSK encryption support.
	   --psk-identity must also be provided	to enable TLS-PSK.

       --psk-identity
	   The client identity to use with TLS-PSK support. This may be	used
	   instead of a	username if the	broker is configured to	do so.

       -q, --qos
	   Specify the quality of service desired for the incoming messages,
	   from	0, 1 and 2. Defaults to	0. See mqtt(7) for more	information on
	   QoS.

	   The QoS applies to all topics subscribed to in a single instance of
	   this	client.

       --quiet
	   If this argument is given, no runtime errors	will be	printed. This
	   excludes any	error messages given in	case of	invalid	user input
	   (e.g. using --port without a	port).

       -R
	   If this argument is given, messages that are	received that have the
	   retain bit set will not be printed. Messages	with retain set	are
	   "stale", in that it is not known when they were originally
	   published. When subscribing to a wildcard topic there may be	a
	   large number	of retained messages. This argument suppresses their
	   display.

	   See also --retain-handling.

       --random-filter
	   This	option can be used to reduce the proportion of messages	that
	   mosquitto_sub prints. The default behaviour is to print all
	   incoming messages. Setting the chance to a floating point value
	   between 0.1 and 100.0 will ensure that on average that percentage
	   of messages will be printed.

       --remove-retained
	   If this argument is given, then when	mosquitto_sub receives a
	   message with	the retained bit set, it will send a message to	the
	   broker to clear that	retained message. This applies to all received
	   messages except those that are filtered out by the -T option. This
	   option still	takes effect even if -R	is used. See also the
	   --retain-as-published and --retained-only options.

	   Example 1.  Remove all retained messages on the server, assuming we
	   have	access to do so, and then exit:

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

	   Example 2.  Remove a	whole tree, with the exception of a single
	   topic:

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

       --retained-only
	   If this argument is given, only messages that are received that
	   have	the retain bit set will	be printed. Messages with retain set
	   are "stale",	in that	it is not known	when they were originally
	   published. With this	argument in use, the receipt of	the first
	   non-stale message will cause	the client to exit. See	also the
	   --retain-as-published option.

       --retain-as-published
	   If this argument is given, the subscriptions	will have the "retain
	   as published" option	set. This means	that the retain	flag on	an
	   incoming message will be exactly as set by the publishing client,
	   rather than indicating whether the message is fresh/stale.

	   This	option is not valid for	MQTT v3.1/v3.1.1 clients.

       --retain-handling always	| new |	never
	   Available from version 2.1.

	   Use this option to control the retain handling option when making a
	   subscription. This controls under what circumstances	an existing
	   retained message is sent to the client when the subscription	is
	   made.

	      always -	always deliver retained	messages

	      new - deliver retained messages the first time a	subscription
	       is made,	but not	on subsequent subscriptions. This is useful
	       for the case where you have a long running client using a
	       non-clean session. If the connection is dropped briefly,	when
	       the client reconnects you will not receive the retained
	       messages	again.

	      never - never deliver retained messages

       -S
	   Use SRV lookups to determine	which host to connect to. Performs
	   lookups to _mqtt._tcp.<host>	when used in conjunction with -h,
	   otherwise uses _mqtt._tcp.<local dns	domain>.

       -t, --topic
	   The MQTT topic to subscribe to. See mqtt(7) for more	information on
	   MQTT	topics.

	   This	option may be repeated to subscribe to multiple	topics.

       -T, --filter-out
	   Suppress printing of	topics that match the filter. This allows
	   subscribing to a wildcard topic and only printing a partial set of
	   the wildcard	hierarchy.

	   For example,	subscribe to the BBC tree, but suppress	output from
	   Radio 3:

	      mosquitto_sub -t	bbc/# -T bbc/radio3

	   This	option may be repeated to filter out multiple topics or	topic
	   trees.

       --tls-alpn
	   Provide a protocol to use when connecting to	a broker that has
	   multiple protocols available	on a single port, e.g. MQTT and
	   WebSockets.

       --tls-engine
	   A valid openssl engine id. These can	be listed with the openssl
	   engine command.

	   See also --keyform.

       --tls-engine-kpass-sha1
	   SHA1	of the private key password when using an TLS engine. Some TLS
	   engines such	as the TPM engine may require the use of a password in
	   order to be accessed. This option allows a hex encoded SHA1 hash of
	   the password	to the engine directly,	instead	of the user being
	   prompted for	the password.

	   See also --tls-engine.

       --tls-keylog file
	   Available from version 2.1.

	   Log TLS connection information to file. This	option allows tools
	   such	as tcpdump, wireshark and mqttshark to decrypt TLS traffic and
	   inspect the MQTT traffic. In	Wireshark this can be done by setting
	   the (Pre)-Master-Secret log filename	option for the Transport Layer
	   Security protocol.

	   This	option should be used for debugging only, it must not be used
	   in production.

       --tls-use-os-certs
	   If used, this will load and trust the OS provided CA	certificates.
	   This	can be used in conjunction with	--cafile and --capath and can
	   be used on its own to enable	TLS mode. This will be set by default
	   if -L mqtts://...  is used, or if port is 8883 and no other
	   certificate options are used.

       --tls-version
	   Choose which	TLS protocol version to	use when communicating with
	   the broker. Valid options are tlsv1.3 and tlsv1.2. The default
	   value is tlsv1.2. Must match	the protocol version used by the
	   broker.

       -u, --username
	   Provide a username to be used for authenticating with the broker.

	   See also the	--pw argument.

       --unix
	   Connect to a	broker through a local unix domain socket instead of a
	   TCP socket. This is a replacement for -h and	-L. For	example:
	   mosquitto_pub --unix	/tmp/mosquitto.sock ...

	   See the socket_domain option	in mosquitto.conf(5) to	configure
	   Mosquitto to	listen on a unix socket.

       -U, --unsubscribe
	   A topic that	will be	unsubscribed from. This	may be used on its own
	   or in conjunction with the --topic option and only makes sense when
	   used	in conjunction with --clean-session.

	   If used with	--topic	then subscriptions will	be processed before
	   unsubscriptions.

	   Note	that it	is only	possible to unsubscribe	from subscriptions
	   that	have previously	been made. It is not possible to punch holes
	   in wildcard subscriptions. For example, subscribing to sensors/#
	   and then unsubscribing from sensors/+/temperature as	shown below
	   will	still result in	messages matching the sensors/+/temperature
	   being delivered to the client.

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

	   Note	also that because retained messages are	published by the
	   broker on receipt of	a SUBSCRIBE command, subscribing and
	   unsubscribing to the	same topic may result in messages being
	   received at the client.

	   This	option may be repeated to unsubscribe from multiple topics.

       -v, --verbose
	   Print received messages verbosely. With this	argument, messages
	   will	be printed as "topic payload". When this argument is not
	   given, the messages are printed as "payload".

	   See also -F.

       -V, --protocol-version
	   Specify which version of the	MQTT protocol should be	used when
	   connecting to the remote broker. Can	be 5, 311, 31, or the more
	   verbose mqttv5, mqttv311, or	mqttv31. Defaults to 311.

       -W
	   Provide a timeout as	an integer number of seconds. The client will
	   stop	processing messages and	disconnect after this number of
	   seconds has passed. The timeout starts just after the client	has
	   connected to	the broker.

       -w, --watch
	   Available from version 2.1.

	   Messages will be printed on a fixed line number based on the	topic
	   and order in	which topics are received. Useful for monitoring
	   multiple topics that	have single line payloads. Unexpected
	   behaviour will occur	if there are more topics than lines in the
	   terminal, or	if the payload occupies	more than a single line. This
	   can be used in conjuction with other	output options e.g.  -F.

	   Requires ANSI escape	code support in	the terminal.

       --will-payload
	   Specify a message that will be stored by the	broker and sent	out if
	   this	client disconnects unexpectedly. This must be used in
	   conjunction with --will-topic.

       --will-qos
	   The QoS to use for the Will.	Defaults to 0. This must be used in
	   conjunction with --will-topic.

       --will-retain
	   If given, if	the client disconnects unexpectedly the	message	sent
	   out will be treated as a retained message. This must	be used	in
	   conjunction with --will-topic.

       --will-topic
	   The topic on	which to send a	Will, in the event that	the client
	   disconnects unexpectedly.

       --ws
	   Connect using WebSockets instead of plain TCP.

       -x
	   Set the session-expiry-interval property on the CONNECT packet. If
	   you use this	option,	the client will	be set to be an	MQTT v5
	   client. Set to 0-4294967294 to specify the session will expire in
	   that	many seconds after the client disconnects, or use -1,
	   4294967295, or  for a session that does not expire. Defaults	to -1
	   if -c is also given,	or 0 if	-c not given.

	   If the session is set to never expire, either with -x or -c,	then a
	   client id must be provided.

OUTPUT FORMAT
       There are three ways of formatting the printed output. In all cases a
       new-line	character is appended for each message received	unless the -N
       argument	is given.

       Payload-only is the default output format and will print	the payload
       exactly as it is	received.

       Verbose mode is activated with -v and prints the	message	topic and the
       payload,	separated by a space.

       The final option	is formatted output, which allows the user to define a
       custom output format. The behaviour is controlled with the -F
       format-string option. The format	string is a free text string where
       interpreted sequences are replaced by different parameters. The
       available interpreted sequences are described below.

       Three characters	are used to start an interpreted sequence: %, @	and \.
       Sequences starting with % are either parameters related to the MQTT
       message being printed, or are helper sequences to avoid the need	to
       type long date format strings for example. Sequences starting with @
       are passed to the strftime(3) function (with the	@ replaced with	a % -
       note that only the character immediately	after the @ is passed to
       strftime). This allows the construction of a wide variety of time based
       outputs.	The output options for strftime	vary from platform to
       platform, so please check what is available for your platform. One
       extension to strftime is	provided which is @N, which can	be used	to
       obtain the number of nanoseconds	passed in the current second. The
       resolution of this option varies	depending on the platform. The final
       sequence	character is \,	which is used to input some characters that
       would otherwise be difficult to enter.

   Flag	characters
       The parameters %A, %C, %d, %E, %F, %f, %I, %l, %m, %p, %R, %S, %t, %x,
       and %X can have optional	flags immediately after	the % character.

       0
	   The value should be zero padded. This applies to the	parameters %A,
	   %E, %d, %F, %f, %l, %m, %S, %X, and %x. It will be ignored for
	   other parameters. If	used with the -	flag, the 0 flag will be
	   ignored.

       -
	   The value will be left aligned to the field width, padded with
	   blanks. The default is right	alignment, with	either 0 or blank
	   padding.

   Field width
       Some of the MQTT	related	parameters can be formatted with an option to
       set their field width in	a similar way to regular printf	style formats,
       i.e. this sets the minimum width	when printing this parameter. If the
       output length is	smaller	than this width, the field will	be padded to
       meet this width.	This applies to	the options %A,	%C, %d,	%E, %F,	%f,
       %I, %l, %m, %p, %R, %S, %t, %x, %X.

       For example %10t	would set the minimum topic field width	to 10
       characters.

   Maximum width
       Some of the MQTT	related	parameters can be formatted with an option to
       set a maximum field width in a similar way to regular printf style
       formats,	for example %.20t for a	maximum	width of 20. This applies to
       the options %C, %I, %R, %t.

       For example %10.10t would set the minimum topic field width to 10
       characters, and the maximum topic width to 10 characters, i.e. the
       field will always be exactly 10 characters long.

   Hexadecimal binary field width
       The %x and %X parameters	output the payload as a	single hexadecimal
       string by default. It is	also possible to split the hexadecimal payload
       into fields by a	chosen length of nibbles. For example, %.2x would
       split the payload into two nibble or one	byte values, separated by
       spaces and might	produce	an output of 18	83.

       The separator character is a space by default, but can be changed to
       one of !"#$&'()*+,-./:;<=>?@[\]^_`{|}~ by adding	that character after
       the binary field	width. For example %.2:x might produce an output of
       18:83.

   Floating point number printing consideration
       The output format supports only the IEEE	754 floating point standard as
       described in Annex F of ISO/IEC 9899:1999. Don't	try to use %f or %d if
       the platform of the publisher uses a different floating point
       representation standard than IEEE 754 or	you will get invalid data. If
       you are unsure what floating representation your	platform is using,
       then it is most likely IEEE 754.	If you get malformed or	unexpected
       values, check if	the floating point number in the payload from the
       publisher is encoded in IEEE 754.

       If want to print	floats,	make sure you only subscribe to	topics that
       send only IEEE 754 formatted floats. The	processing is very strict
       about floats and	if anything that is not	a float	is received, an	error
       message will be printed.

   MQTT	related	parameters
          %% a	literal	%.

          %A the MQTT v5 topic-alias property,	if present.

          %C the MQTT v5 content-type property, if present.

          %D the MQTT v5 correlation-data property, if	present. Note that
	   this	property is specified as binary	data, so may produce
	   non-printable characters.

          %d the payload treated as an	8 byte IEEE 754	float (double).

          %E the MQTT v5 message-expiry-interval property, if present.

          %F the MQTT v5 payload-format-indicator property, if	present.

          %f the payload treated as an	4 byte IEEE 754	float.

          %l the length of the	payload	in bytes.

          %m the message id (only relevant for	messages with QoS>0).

          %P the MQTT v5 user-property	property, if present. This will	be
	   printed in the form key:value. It is	possible for any number	of
	   user	properties to be attached to a message,	and to have duplicate
	   keys.

          %p the payload raw bytes (may produce non-printable characters
	   depending on	the payload).

          %q the message QoS.

          %R the MQTT v5 response-topic property, if present.

          %r the retained flag	for the	message.

          %S the MQTT v5 subscription-identifier property, if present.

          %t the message topic.

          %x the payload with each byte as a hexadecimal number (lower	case).

          %X the payload with each byte as a hexadecimal number (upper	case).

   Helpers
          %I ISO-8601 format date and time, e.g. 2016-08-10T09:47:38+0100

          %j JSON output of message parameters	and timestamp, with a quoted
	   and escaped payload.	For example
	   {"tst":"2020-05-06T22:12:00.000000+0100","topic":"greeting","qos":0,"retain":0,"payload":"hello
	   world"}

          %J JSON output of message parameters	and timestamp, with a
	   non-quoted and non-escaped payload -	this means the payload must
	   itself be valid JSON. For example:
	   {"tst":"2020-05-06T22:12:00.000000+0100","topic":"foo","qos":0,"retain":0,"payload":{"temperature":27.0,"humidity":57}}.

	   If the payload is not valid JSON, then the error message "Error:
	   Message payload is not valid	JSON on	topic <topic>" will be printed
	   to stderr.

          %U Unix timestamp with nanoseconds, e.g. 1470818943.786368637

   Time	related	parameters
          @@ a	literal	@.

          @X pass the character represented by	X to the strftime function as
	   %X. The options supported are platform dependent.

          @N the number of nanoseconds	that have passed in the	current
	   second, with	varying	timing resolution depending on platform.

   Escape characters
          \\ a	literal	\.

          \0 a	null character.	Can be used to separate	different parameters
	   that	may contain spaces (e.g. topic,	payload) so that processing
	   with	tools such as xargs(1) is easier.

          \a alert/bell.

          \e the escape sequence, which can be	used with ANSI colour codes to
	   provide coloured output for example.

          \n end of line.

          \r carriage return.

          \t horizontal tab.

          \v vertical tab.

WILLS
       The client can register a message with the broker that will be sent out
       if it disconnects unexpectedly. See mqtt(7) for more information.

       The minimum requirement for this	is to use --will-topic to specify
       which topic the will should be sent out on. This	will result in a
       non-retained, zero length message with QoS 0.

       Use the --will-retain, --will-payload and --will-qos arguments to
       modify the other	will parameters.

PROPERTIES
       The -D /	--property option allows adding	properties to different	stages
       of the mosquitto_sub run. The properties	supported for each command are
       as follows:

   Connect
          authentication-data (binary data - note treated as a	string)

          authentication-method (UTF-8	string pair)

          maximum-packet-size (32-bit unsigned	integer)

          receive-maximum (16-bit unsigned integer)

          request-problem-information (8-bit unsigned integer)

          request-response-information	(8-bit unsigned	integer)

          session-expiry-interval (32-bit unsigned integer, note use -x
	   instead)

          topic-alias-maximum (16-bit unsigned	integer)

          user-property (UTF-8	string pair)

   Subscribe
          user-property (UTF-8	string pair)

   Unsubscribe
          user-property (UTF-8	string pair)

   Disconnect
          session-expiry-interval (32-bit unsigned integer)

          user-property (UTF-8	string pair)

   Will	properties
          content-type	(UTF-8 string)

          correlation-data (binary data - note	treated	as a string)

          message-expiry-interval (32-bit unsigned integer)

          payload-format-indicator (8-bit unsigned integer)

          response-topic (UTF-8 string)

          user-property (UTF-8	string pair)

          will-delay-interval (32-bit unsigned	integer)

EXIT STATUS
       Zero on success,	or non-zero on error. If the connection	is refused by
       the broker at the MQTT level, then the exit code	is the CONNACK reason
       code. If	another	error occurs, the exit code is a libmosquitto return
       value.

       MQTT v3.1.1 CONNACK codes:

          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

       MQTT v5 CONNACK codes:

          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

EXAMPLES
       Note that these really are examples - the subscriptions will work if
       you run them as shown, but there	must be	something publishing messages
       on those	topics for you to receive anything.

       Subscribe to temperature	information on localhost with QoS 1:

          mosquitto_sub -t sensors/temperature	-q 1

       Subscribe to hard drive temperature updates on multiple machines/hard
       drives. This expects each machine to be publishing its hard drive
       temperature to sensors/machines/HOSTNAME/temperature/HD_NAME.

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

       Subscribe to all	broker status messages:

          mosquitto_sub -v -t \$SYS/#

       Specify the output format as "ISO-8601 date : topic : payload in	hex"

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

       Specify the output format as "seconds since epoch.nanoseconds :
       retained	flag : qos : mid : payload length"

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

       Topic and payload output, but with colour where supported.

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

FILES
       $XDG_CONFIG_HOME/mosquitto_sub, $HOME/.config/mosquitto_sub,
       $HOME/snap/mosquitto/current/.config/mosquitto_sub (for snap installs)
	   Configuration file for default options.

BUGS
       mosquitto bug information can be	found at
       https://github.com/eclipse-mosquitto/mosquitto/issues

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

AUTHOR
       Roger Light <roger@atchoo.org>

Mosquitto Project		  06/11/2026		      MOSQUITTO_SUB(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mosquitto_sub&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help