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

FreeBSD Manual Pages

  
 
  

home | help
MOSQUITTO_PUB(1)		    Commands			MOSQUITTO_PUB(1)

NAME
     mosquitto_pub  -  an  MQTT version 5/3.1.1/3.1 client for publishing simple
     messages

SYNOPSIS
     mosquitto_pub [options] -t topic {payload-options}

     options:
	      [auth-options] [connection-options] [misc-options]  [mqtt-options]
	      [output-options]	 [publish-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:
		   [-o config-file]

     mqtt-options:
		   [-c]       [-D command identifier value]	  [-i client-id]
		   [-I client-id-prefix]   [-k keepalive-time]	 [-x session-ex-
		   piry-interval] [-V protocol-version]
		   [--will-topic topic [--will-payload pay-
		   load] [--will-qos qos] [--will-retain]]

     output-options:
		     [-d] [--quiet]

     payload-options:
		      -f file | -l | -m message | -n | -s

     publish-options:
		      [-q message-QoS]	 [-r]	[--repeat count]   [--repeat-de-
		      lay seconds]

     tls-certificate-options:
			      [--no-tls]
			      {--cafile file | --capath dir}
			      [--tls-use-os-certs]
			      [--cert file] [--key file]
			      [--ciphers ciphers] [--insecure]	[--tls-alpn pro-
			      tocol] [--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_pub [--help]

DESCRIPTION
     mosquitto_pub  is	a simple MQTT version 5/3.1.1 client that will publish a
     single message on a topic and exit.

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 certifi-
     cates 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_pub: the default con-
     fig 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_pub  or
     $HOME/.config/mosquitto_pub     on     POSIX    systems,	 or    %USERPRO-
     FILE%\mosquitto_pub 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  com-
     ments 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 ar-
	 gument 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.

     -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  CON-
	 NECT, PUBLISH, PUBACK, PUBREC, PUBCOMP, SUBSCRIBE, UNSUBSCRIBE, DISCON-
	 NECT,	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: pay-
	 load-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.

     -f, --file
	 Send the contents of a file as the message.

     --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 gener-
	 ated  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 verifica-
	 tion of the server hostname in the server certificate. This can be use-
	 ful 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 mod-
	 ule  is  being  used  and the private key has been created with it. De-
	 faults 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[:pass-
	 word]@]host[:port]/topic	   or		ws(s)://[username[:pass-
	 word]@]host[:port]/path

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

     -l, --stdin-line
	 Send messages read from stdin, splitting separate lines  into	separate
	 messages.

     -m, --message
	 Send a single request message from the command line.

     -n, --null-message
	 Send a null (zero length) message.

     --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.

     --proxy
	 Specify a SOCKS5 proxy to connect through. "None"  and  "username"  au-
	 thentication  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 de-
	 mand, 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 in-
	 stead of a username if the broker is configured to do so.

     -q, --qos
	 Specify the quality of service to use for the message, from 0, 1 and 2.
	 Defaults to 0.

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

     -r, --retain
	 If retain is given, the message will be retained as a "last known good"
	 value	on  the broker. See mqtt(7) for more information. Note that zero
	 length payloads are never retained. If you send a zero  length  payload
	 retained message it will clear any retained message on the topic.

     --repeat
	 If the publish mode is-m, -f, or -s (i.e. the modes where only a single
	 message is sent), then --repeat can be used to specify that the message
	 will be published multiple times.

	 See also --repeat-delay.

     --repeat-delay
	 If  using  --repeat,  then the default behaviour is to publish repeated
	 messages as soon as the previous message is delivered. Use --repeat-de-
	 lay to specify the number of seconds to wait after the previous message
	 was delivered before publishing the next. Does not need to be an  inte-
	 ger number of seconds.

	 Note  that there is no guarantee as to the actual interval between mes-
	 sages, this option simply defines the minimum time from delivery of one
	 message to the start of the publish of the next.

     -s, --stdin-file
	 Send a request message read from stdin, sending the entire content as a
	 single message.

     -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  on which to publish the message. See mqtt(7) for more
	 information on MQTT topics.

     --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 en-
	 gines 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 pass-
	 word 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  Secu-
	 rity 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  op-
	 tions 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.

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

     --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 con-
	 junction 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 discon-
	 nects 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 a 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.

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_pub 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)

   Publish
     *	 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)

     *	 topic-alias (16-bit unsigned integer)

     *	 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
     Publish temperature information to localhost with QoS 1:

     *	 mosquitto_pub -t sensors/temperature -m 32 -q 1

     Publish timestamp and  temperature  information  to  a  remote  host  on  a
     non-standard port and QoS 0:

     *	 mosquitto_pub	 -h   192.168.1.1  -p  1885  -t  sensors/temperature  -m
	 "1266193804 32"

     Publish light switch status. Message is set to retained because  there  may
     be a long period of time between light switch events:

     *	 mosquitto_pub -r -t switches/kitchen_lights/status -m "on"

     Send the contents of a file in two ways:

     *	 mosquitto_pub -t my/topic -f ./data

     *	 mosquitto_pub -t my/topic -s < ./data

     Send  parsed electricity usage data from a Current Cost meter, reading from
     stdin with one line/reading as one message:

     *	 read_cc128.pl | mosquitto_pub -t sensors/cc128 -l

     Power on an appliance using zigbee2mqtt  and  an  appropriately  configured
     power socket:

     *	 mosquitto_pub -t zigbee2mqtt/power-microwave/set -m '{"state":"ON"}'

FILES
     $XDG_CONFIG_HOME/mosquitto_pub,		    $HOME/.config/mosquitto_pub,
     $HOME/snap/mosquitto/current/.config/mosquitto_pub (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_rr(1),	mosquitto_sub(1),  mosquitto(8),
     libmosquitto(3), mosquitto-tls(7)

AUTHOR
     Roger Light <roger@atchoo.org>

Mosquitto Project		   07/30/2026			MOSQUITTO_PUB(1)

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

home | help