123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887 |
- <?xml version='1.0' encoding='UTF-8'?>
- <?xml-stylesheet type="text/xsl" href="manpage.xsl"?>
- <refentry xml:id="mosquitto_pub" xmlns:xlink="http://www.w3.org/1999/xlink">
- <refmeta>
- <refentrytitle>mosquitto_pub</refentrytitle>
- <manvolnum>1</manvolnum>
- <refmiscinfo class="source">Mosquitto Project</refmiscinfo>
- <refmiscinfo class="manual">Commands</refmiscinfo>
- </refmeta>
- <refnamediv>
- <refname>mosquitto_pub</refname>
- <refpurpose>an MQTT version 5/3.1.1/3.1 client for publishing simple messages</refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <cmdsynopsis>
- <command>mosquitto_pub</command>
- <group choice='req'>
- <arg choice='plain'>
- <arg><option>-h</option> <replaceable>hostname</replaceable></arg>
- <arg><option>--unix</option> <replaceable>socket path</replaceable></arg>
- <arg><option>-p</option> <replaceable>port-number</replaceable></arg>
- <arg><option>-u</option> <replaceable>username</replaceable></arg>
- <arg><option>-P</option> <replaceable>password</replaceable></arg>
- <arg choice='plain' rep='repeat'><option>-t</option> <replaceable>message-topic</replaceable></arg>
- </arg>
- <arg choice='plain'><option>-L</option> <replaceable>URL</replaceable></arg>
- </group>
- <arg><option>-A</option> <replaceable>bind-address</replaceable></arg>
- <arg><option>-c</option></arg>
- <arg><option>-d</option></arg>
- <arg><option>-D</option> <replaceable>command</replaceable> <replaceable>identifier</replaceable> <replaceable>value</replaceable></arg>
- <arg><option>-i</option> <replaceable>client-id</replaceable></arg>
- <arg><option>-I</option> <replaceable>client-id-prefix</replaceable></arg>
- <arg><option>-k</option> <replaceable>keepalive-time</replaceable></arg>
- <arg><option>--nodelay</option></arg>
- <arg><option>-q</option> <replaceable>message-QoS</replaceable></arg>
- <arg><option>--quiet</option></arg>
- <arg><option>-r</option></arg>
- <arg><option>--repeat</option> <replaceable>count</replaceable></arg>
- <arg><option>--repeat-delay</option> <replaceable>seconds</replaceable></arg>
- <arg><option>-S</option></arg>
- <arg><option>-V</option> <replaceable>protocol-version</replaceable></arg>
- <arg><option>-x</option> <replaceable>session-expiry-interval</replaceable></arg>
- <group choice='req'>
- <arg choice='plain'><option>-f</option> <replaceable>file</replaceable></arg>
- <arg choice='plain'><option>-l</option></arg>
- <arg choice='plain'><option>-m</option> <replaceable>message</replaceable></arg>
- <arg choice='plain'><option>-n</option></arg>
- <arg choice='plain'><option>-s</option></arg>
- </group>
- <arg>
- <option>--will-topic</option> <replaceable>topic</replaceable>
- <arg><option>--will-payload</option> <replaceable>payload</replaceable></arg>
- <arg><option>--will-qos</option> <replaceable>qos</replaceable></arg>
- <arg><option>--will-retain</option></arg>
- </arg>
- <group>
- <arg>
- <group choice='req'>
- <arg choice='plain'><option>--cafile</option> <replaceable>file</replaceable></arg>
- <arg choice='plain'><option>--capath</option> <replaceable>dir</replaceable></arg>
- </group>
- <arg><option>--cert</option> <replaceable>file</replaceable></arg>
- <arg><option>--key</option> <replaceable>file</replaceable></arg>
- <arg><option>--ciphers</option> <replaceable>ciphers</replaceable></arg>
- <arg><option>--tls-version</option> <replaceable>version</replaceable></arg>
- <arg><option>--tls-alpn</option> <replaceable>protocol</replaceable></arg>
- <arg><option>--tls-engine</option> <replaceable>engine</replaceable></arg>
- <arg><option>--keyform</option>
- <group choice='req'>
- <arg choice='plain'><replaceable>pem</replaceable></arg>
- <arg choice='plain'><replaceable>engine</replaceable></arg>
- </group></arg>
- <arg><option>--tls-engine-kpass-sha1</option> <replaceable>kpass-sha1</replaceable></arg>
- <arg><option>--tls-use-os-certs</option></arg>
- <arg><option>--insecure</option></arg>
- </arg>
- <arg>
- <arg choice='plain'><option>--psk</option> <replaceable>hex-key</replaceable></arg>
- <arg choice='plain'><option>--psk-identity</option> <replaceable>identity</replaceable></arg>
- <arg><option>--ciphers</option> <replaceable>ciphers</replaceable></arg>
- <arg><option>--tls-version</option> <replaceable>version</replaceable></arg>
- </arg>
- </group>
- <arg><option>--proxy</option> <replaceable>socks-url</replaceable></arg>
- </cmdsynopsis>
- <cmdsynopsis>
- <command>mosquitto_pub</command>
- <group choice='plain'>
- <arg><option>--help</option></arg>
- </group>
- </cmdsynopsis>
- </refsynopsisdiv>
- <refsect1>
- <title>Description</title>
- <para><command>mosquitto_pub</command> is a simple MQTT version 5/3.1.1
- client that will publish a single message on a topic and
- exit.</para>
- </refsect1>
- <refsect1>
- <title>Encrypted Connections</title>
- <para><command>mosquitto_pub</command> supports TLS encrypted
- connections. It is strongly recommended that you use an encrypted
- connection for anything more than the most basic setup.</para>
- <para>To enable TLS connections when using x509 certificates, one of
- either <option>--cafile</option> or <option>--capath</option> can
- be provided as an option.</para>
- <para>Alternatively, if the <option>-p 8883</option> option is used
- then the OS provided certificates will be loaded and neither
- <option>--cafile</option> or <option>--capath</option> are
- needed</para>
- <para>To enable TLS connections when using TLS-PSK, you must use the
- <option>--psk</option> and the <option>--psk-identity</option>
- options.</para>
- </refsect1>
- <refsect1>
- <title>Options</title>
- <para>The options below may be given on the command line, but may also
- be placed in a config file located at
- <option>$XDG_CONFIG_HOME/mosquitto_pub</option> or
- <option>$HOME/.config/mosquitto_pub</option> with one pair of
- <option>-option <replaceable>value</replaceable></option>
- per line. The values in the config file will be used as defaults
- and can be overridden by using the command line. 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. <option>-S</option>. Config file lines that have a
- <option>#</option> as the first character are treated as comments
- and not processed any further.</para>
- <variablelist>
- <varlistentry>
- <term><option>-A</option></term>
- <listitem>
- <para>Bind the outgoing connection to a local ip
- address/hostname. Use this argument if you need to
- restrict network communication to a particular
- interface.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-c</option></term>
- <term><option>--disable-clean-session</option></term>
- <listitem>
- <para>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 <option>-x</option> argument.
- </para>
- <para>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.</para>
- <para>If using this option, the client id must be set
- manually with <option>--id</option></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--cafile</option></term>
- <listitem>
- <para>Define the path to a file containing PEM encoded CA
- certificates that are trusted. Used to enable SSL
- communication.</para>
- <para>See also <option>--capath</option></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--capath</option></term>
- <listitem>
- <para>Define the path to a directory containing PEM encoded CA
- certificates that are trusted. Used to enable SSL
- communication.</para>
- <para>For <option>--capath</option> 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.</para>
- <para>See also <option>--cafile</option></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--cert</option></term>
- <listitem>
- <para>Define the path to a file containing a PEM encoded
- certificate for this client, if required by the
- server.</para>
- <para>See also <option>--key</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--ciphers</option></term>
- <listitem>
- <para>An openssl compatible list of TLS ciphers to support
- in the client. See
- <citerefentry><refentrytitle><link xlink:href="https://linux.die.net/man/1/ciphers">ciphers</link></refentrytitle><manvolnum>1</manvolnum></citerefentry>
- for more information.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-d</option></term>
- <term><option>--debug</option></term>
- <listitem>
- <para>Enable debug messages.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-D</option></term>
- <term><option>--property</option></term>
- <listitem>
- <para>Use an MQTT v5 property with this publish. If you use
- this option, the client will be set to be an MQTT v5
- client. This option has two forms:</para>
- <para><option>-D command identifier value</option></para>
- <para><option>-D command identifier name value</option></para>
- <para><option>command</option> is the MQTT command/packet
- identifier and can be one of CONNECT, PUBLISH, PUBREL,
- DISCONNECT, AUTH, or WILL. The properties available for
- each command are listed in the
- <link linkend='properties'>Properties</link>
- section.</para>
- <para><option>identifier</option> is the name of the
- property to add. This is as described in the
- specification, but with '-' as a word separator. For
- example:
- <option>payload-format-indicator</option>. More details
- are in the <link linkend='properties'>Properties</link>
- section.</para>
- <para><option>value</option> is the value of the property
- to add, with a data type that is property
- specific.</para>
- <para><option>name</option> is only used for the
- <option>user-property</option> property as the first of
- the two strings in the string pair. In that case,
- <option>value</option> is the second of the strings in
- the pair.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-f</option></term>
- <term><option>--file</option></term>
- <listitem>
- <para>Send the contents of a file as the message.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--help</option></term>
- <listitem>
- <para>Display usage information.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-h</option></term>
- <term><option>--host</option></term>
- <listitem>
- <para>Specify the host to connect to. Defaults to localhost.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-i</option></term>
- <term><option>--id</option></term>
- <listitem>
- <para>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
- <option>mosq-XXXXXXXXXXXXXXXXXX</option>, where the
- <option>X</option> 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.</para>
- <para>This option cannot be used at the same time as the
- <option>--id-prefix</option> argument.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-I</option></term>
- <term><option>--id-prefix</option></term>
- <listitem>
- <para>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
- <option>--id</option> argument.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--insecure</option></term>
- <listitem>
- <para>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 <emphasis>only</emphasis>. 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.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-k</option></term>
- <term><option>--keepalive</option></term>
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--key</option></term>
- <listitem>
- <para>Define the path to a file containing a PEM encoded
- private key for this client, if required by the
- server.</para>
- <para>See also <option>--cert</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--keyform</option></term>
- <listitem>
- <para>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.</para>
- <para>See also <option>--tls-engine</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-L</option></term>
- <term><option>--url</option></term>
- <listitem>
- <para>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</para>
- <para>If the scheme is mqtt:// then the port defaults to
- 1883. If the scheme is mqtts:// then the port defaults
- to 8883.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-l</option></term>
- <term><option>--stdin-line</option></term>
- <listitem>
- <para>Send messages read from stdin, splitting separate lines into separate messages.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-m</option></term>
- <term><option>--message</option></term>
- <listitem>
- <para>Send a single message from the command line.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-n</option></term>
- <term><option>--null-message</option></term>
- <listitem>
- <para>Send a null (zero length) message.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--nodelay</option></term>
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-p</option></term>
- <term><option>--port</option></term>
- <listitem>
- <para>Connect to the port specified. If not given, the
- default of 1883 for plain MQTT or 8883 for MQTT over
- TLS will be used.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-P</option></term>
- <term><option>--pw</option></term>
- <listitem>
- <para>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 <option>--username</option> option.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--proxy</option></term>
- <listitem>
- <para>Specify a SOCKS5 proxy to connect through. "None" and
- "username" authentication types are supported. The
- <option>socks-url</option> must be of the form
- <option>socks5h://[username[:password]@]host[:port]</option>.
- The protocol prefix <option>socks5h</option> 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.</para>
- <para>If username is not given, then no authentication is
- attempted. If the port is not given, then the default
- of 1080 is used.</para>
- <para>More SOCKS versions may be available in the future,
- depending on demand, and will use different protocol
- prefixes as described in <citerefentry>
- <refentrytitle><link xlink:href="https://linux.die.net/man/1/curl">curl</link></refentrytitle>
- <manvolnum>1</manvolnum> </citerefentry>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--psk</option></term>
- <listitem>
- <para>Provide the hexadecimal (no leading 0x)
- pre-shared-key matching the one used on the broker to
- use TLS-PSK encryption support.
- <option>--psk-identity</option> must also be provided
- to enable TLS-PSK.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--psk-identity</option></term>
- <listitem>
- <para>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.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-q</option></term>
- <term><option>--qos</option></term>
- <listitem>
- <para>Specify the quality of service to use for the message, from 0, 1 and 2. Defaults to 0.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--quiet</option></term>
- <listitem>
- <para>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 <option>--port</option> without a
- port).</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-r</option></term>
- <term><option>--retain</option></term>
- <listitem>
- <para>
- If retain is given, the message will be retained as a
- "last known good" value on the broker. See
- <citerefentry><refentrytitle><link xlink:href="mqtt-7.html">mqtt</link></refentrytitle><manvolnum>7</manvolnum></citerefentry>
- 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.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--repeat</option></term>
- <listitem>
- <para>If the publish mode is<option>-m</option>,
- <option>-f</option>, or <option>-s</option> (i.e. the modes
- where only a single message is sent), then
- <option>--repeat</option> can be used to specify that the
- message will be published multiple times.</para>
- <para>See also <option>--repeat-delay</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--repeat-delay</option></term>
- <listitem>
- <para>If using <option>--repeat</option>, then the default
- behaviour is to publish repeated messages as soon as the
- previous message is delivered. Use
- <option>--repeat-delay</option> to specify the number of
- seconds to wait after the previous message was delivered
- before publishing the next. Does not need to be an integer
- number of seconds.</para>
- <para>Note that there is no guarantee as to the actual interval
- between messages, this option simply defines the minimum
- time from delivery of one message to the start of the
- publish of the next.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-s</option></term>
- <term><option>--stdin-file</option></term>
- <listitem>
- <para>Send a message read from stdin, sending the entire content as a single message.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-S</option></term>
- <listitem>
- <para>Use SRV lookups to determine which host to connect
- to. Performs lookups to
- <option>_mqtt._tcp.<host></option> when used in
- conjunction with <option>-h</option>, otherwise uses
- <option>_mqtt._tcp.<local dns
- domain></option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-t</option></term>
- <term><option>--topic</option></term>
- <listitem>
- <para>The MQTT topic on which to publish the message. See <citerefentry><refentrytitle><link xlink:href="mqtt-7.html">mqtt</link></refentrytitle><manvolnum>7</manvolnum></citerefentry> for more information on MQTT topics.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--tls-alpn</option></term>
- <listitem>
- <para>Provide a protocol to use when connecting to a broker
- that has multiple protocols available on a single port,
- e.g. MQTT and WebSockets.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--tls-engine</option></term>
- <listitem>
- <para>A valid openssl engine id. These can be listed with
- openssl engine command.</para>
- <para>See also <option>--keyform</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--tls-engine-kpass-sha1</option></term>
- <listitem>
- <para>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.</para>
- <para>See also <option>--tls-engine</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--tls-use-os-certs</option></term>
- <listitem>
- <para>
- If used, this will load and trust the OS provided CA
- certificates. This can be used in conjunction with
- <option>--cafile</option> and <option>--capath</option>
- and can be used on its own to enable TLS mode. This
- will be set by default if <option>-L mqtts://...</option>
- is used, or if port is 8883 and no other certificate
- options are used.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--tls-version</option></term>
- <listitem>
- <para>Choose which TLS protocol version to use when
- communicating with the broker. Valid options are
- <option>tlsv1.3</option>, <option>tlsv1.2</option> and
- <option>tlsv1.1</option>. The default value is
- <option>tlsv1.2</option>. Must match the protocol
- version used by the broker.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-u</option></term>
- <term><option>--username</option></term>
- <listitem>
- <para>Provide a username to be used for authenticating with
- the broker. See also the <option>--pw</option>
- argument.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--unix</option></term>
- <listitem>
- <para>Connect to a broker through a local unix domain socket
- instead of a TCP socket. This is a replacement for
- <option>-h</option> and <option>-L</option>. For example:
- <option>mosquitto_pub --unix /tmp/mosquitto.sock ...</option>
- </para>
- <para>See the <option>socket_domain</option> option in
- <refentrytitle>
- <link xlink:href="mosquitto-conf-5.html">mosquitto.conf</link>
- </refentrytitle><manvolnum>5</manvolnum>
- to configure Mosquitto to listen on a unix socket.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-V</option></term>
- <term><option>--protocol-version</option></term>
- <listitem>
- <para>Specify which version of the MQTT protocol should be
- used when connecting to the rmeote broker. Can be
- <option>5</option>, <option>311</option>,
- <option>31</option>, or the more verbose
- <option>mqttv5</option>, <option>mqttv311</option>, or
- <option>mqttv31</option>.
- Defaults to <option>311</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--will-payload</option></term>
- <listitem>
- <para>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 <option>--will-topic</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--will-qos</option></term>
- <listitem>
- <para>The QoS to use for the Will. Defaults to 0. This must
- be used in conjunction with <option>--will-topic</option>.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--will-retain</option></term>
- <listitem>
- <para>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 <option>--will-topic</option>.
- 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.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>--will-topic</option></term>
- <listitem>
- <para>The topic on which to send a Will, in the event that
- the client disconnects unexpectedly.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><option>-x</option></term>
- <listitem>
- <para>Set the session-expiry-interval property on the CONNECT packet.
- Applies to MQTT v5 clients only. 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.</para>
- <para>If the session is set to never expire, either with -x or -c, then
- a client id must be provided.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Wills</title>
- <para>mosquitto_sub can register a message with the broker that will be
- sent out if it disconnects unexpectedly. See
- <citerefentry><refentrytitle><link xlink:href="mqtt-7.html">mqtt</link></refentrytitle><manvolnum>7</manvolnum></citerefentry>
- for more information.</para>
- <para>The minimum requirement for this is to use <option>--will-topic</option> to
- specify which topic the will should be sent out on. This will result in
- a non-retained, zero length message with QoS 0.</para>
- <para>Use the <option>--will-retain</option>,
- <option>--will-payload</option> and <option>--will-qos</option>
- arguments to modify the other will parameters.</para>
- </refsect1>
- <refsect1 id='properties'>
- <title>Properties</title>
- <para>The <option>-D</option> / <option>--property</option> option
- allows adding properties to different stages of the mosquitto_pub
- run. The properties supported for each command are as
- follows:</para>
- <refsect2>
- <title>Connect</title>
- <itemizedlist>
- <listitem><para><option>authentication-data</option> (binary data - note treated as a string in mosquitto_pub)</para></listitem>
- <listitem><para><option>authentication-method</option> (UTF-8 string pair)</para></listitem>
- <listitem><para><option>maximum-packet-size</option> (32-bit unsigned integer)</para></listitem>
- <listitem><para><option>receive-maximum</option> (16-bit unsigned integer)</para></listitem>
- <listitem><para><option>request-problem-information</option> (8-bit unsigned integer)</para></listitem>
- <listitem><para><option>request-response-information</option> (8-bit unsigned integer)</para></listitem>
- <listitem><para><option>session-expiry-interval</option> (32-bit unsigned integer, note use <option>-x</option> instead)</para></listitem>
- <listitem><para><option>topic-alias-maximum</option> (16-bit unsigned integer)</para></listitem>
- <listitem><para><option>user-property</option> (UTF-8 string pair)</para></listitem>
- </itemizedlist>
- </refsect2>
- <refsect2>
- <title>Publish</title>
- <itemizedlist>
- <listitem><para><option>content-type</option> (UTF-8 string)</para></listitem>
- <listitem><para><option>correlation-data</option> (binary data - note treated as a string in mosquitto_pub)</para></listitem>
- <listitem><para><option>message-expiry-interval</option> (32-bit unsigned integer)</para></listitem>
- <listitem><para><option>payload-format-indicator</option> (8-bit unsigned integer)</para></listitem>
- <listitem><para><option>response-topic</option> (UTF-8 string)</para></listitem>
- <listitem><para><option>topic-alias</option> (16-bit unsigned integer)</para></listitem>
- <listitem><para><option>user-property</option> (UTF-8 string pair)</para></listitem>
- </itemizedlist>
- </refsect2>
- <refsect2>
- <title>Disconnect</title>
- <itemizedlist>
- <listitem><para><option>session-expiry-interval</option> (32-bit unsigned integer)</para></listitem>
- <listitem><para><option>user-property</option> (UTF-8 string pair)</para></listitem>
- </itemizedlist>
- </refsect2>
- <refsect2>
- <title>Will properties</title>
- <itemizedlist>
- <listitem><para><option>content-type</option> (UTF-8 string)</para></listitem>
- <listitem><para><option>correlation-data</option> (binary data - note treated as a string in mosquitto_pub)</para></listitem>
- <listitem><para><option>message-expiry-interval</option> (32-bit unsigned integer)</para></listitem>
- <listitem><para><option>payload-format-indicator</option> (8-bit unsigned integer)</para></listitem>
- <listitem><para><option>response-topic</option> (UTF-8 string)</para></listitem>
- <listitem><para><option>user-property</option> (UTF-8 string pair)</para></listitem>
- <listitem><para><option>will-delay-interval</option> (32-bit unsigned integer)</para></listitem>
- </itemizedlist>
- </refsect2>
- </refsect1>
- <refsect1>
- <title>Exit Status</title>
- <para>
- mosquitto_sub returns 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.
- </para>
- <para>MQTT v3.1.1 CONNACK codes:</para>
- <itemizedlist mark="circle">
- <listitem><para><option>0</option> Success</para></listitem>
- <listitem><para><option>1</option> Connection refused: Bad protocol version</para></listitem>
- <listitem><para><option>2</option> Connection refused: Identifier rejected</para></listitem>
- <listitem><para><option>3</option> Connection refused: Server unavailable</para></listitem>
- <listitem><para><option>4</option> Connection refused: Bad username/password</para></listitem>
- <listitem><para><option>5</option> Connection refused: Not authorized</para></listitem>
- </itemizedlist>
- <para>MQTT v5 CONNACK codes:</para>
- <itemizedlist>
- <listitem><para><option>0</option> Success</para></listitem>
- <listitem><para><option>128</option> Unspecified error</para></listitem>
- <listitem><para><option>129</option> Malformed packet</para></listitem>
- <listitem><para><option>130</option> Protocol error</para></listitem>
- <listitem><para><option>131</option> Implementation specific error</para></listitem>
- <listitem><para><option>132</option> Unsupported protocol version</para></listitem>
- <listitem><para><option>133</option> Client ID not valid</para></listitem>
- <listitem><para><option>134</option> Bad username or password</para></listitem>
- <listitem><para><option>135</option> Not authorized</para></listitem>
- <listitem><para><option>136</option> Server unavailable</para></listitem>
- <listitem><para><option>137</option> Server busy</para></listitem>
- <listitem><para><option>138</option> Banned</para></listitem>
- <listitem><para><option>139</option> Server shutting down</para></listitem>
- <listitem><para><option>140</option> Bad authentication method</para></listitem>
- <listitem><para><option>141</option> Keep alive timeout</para></listitem>
- <listitem><para><option>142</option> Session taken over</para></listitem>
- <listitem><para><option>143</option> Topic filter invalid</para></listitem>
- <listitem><para><option>144</option> Topic name invalid</para></listitem>
- <listitem><para><option>147</option> Receive maximum exceeded</para></listitem>
- <listitem><para><option>148</option> Topic alias invalid</para></listitem>
- <listitem><para><option>149</option> Packet too large</para></listitem>
- <listitem><para><option>148</option> Message rate too high</para></listitem>
- <listitem><para><option>151</option> Quota exceeded</para></listitem>
- <listitem><para><option>152</option> Administrative action</para></listitem>
- <listitem><para><option>153</option> Payload format invalid</para></listitem>
- <listitem><para><option>154</option> Retain not supported</para></listitem>
- <listitem><para><option>155</option> QoS not supported</para></listitem>
- <listitem><para><option>156</option> Use another server</para></listitem>
- <listitem><para><option>157</option> Server moved</para></listitem>
- <listitem><para><option>158</option> Shared subscriptions not supported</para></listitem>
- <listitem><para><option>159</option> Connection rate exceeded</para></listitem>
- <listitem><para><option>160</option> Maximum connect time</para></listitem>
- <listitem><para><option>161</option> Subscription IDs not supported</para></listitem>
- <listitem><para><option>162</option> Wildcard subscriptions not supported</para></listitem>
- </itemizedlist>
- </refsect1>
- <refsect1>
- <title>Examples</title>
- <para>Publish temperature information to localhost with QoS 1:</para>
- <itemizedlist mark="circle">
- <listitem><para>mosquitto_pub <literal>-t</literal> sensors/temperature <literal>-m</literal> 32 <literal>-q</literal> 1</para></listitem>
- </itemizedlist>
- <para>Publish timestamp and temperature information to a remote host on a non-standard port and QoS 0:</para>
- <itemizedlist mark="circle">
- <listitem><para>mosquitto_pub <literal>-h</literal> 192.168.1.1
- <literal>-p</literal> 1885 <literal>-t</literal>
- sensors/temperature <literal>-m</literal> "1266193804
- 32"</para></listitem>
- </itemizedlist>
- <para>Publish light switch status. Message is set to retained because there may be a long period of time between light switch events:</para>
- <itemizedlist mark="circle">
- <listitem><para>mosquitto_pub <literal>-r</literal> <literal>-t</literal> switches/kitchen_lights/status <literal>-m</literal> "on"</para></listitem>
- </itemizedlist>
- <para>Send the contents of a file in two ways:</para>
- <itemizedlist mark="circle">
- <listitem><para>mosquitto_pub <literal>-t</literal> my/topic <literal>-f</literal> ./data</para></listitem>
- <listitem><para>mosquitto_pub <literal>-t</literal> my/topic <literal>-s</literal> < ./data</para></listitem>
- </itemizedlist>
- <para>Send parsed electricity usage data from a Current Cost meter, reading from stdin with one line/reading as one message:</para>
- <itemizedlist mark="circle">
- <listitem><para>read_cc128.pl | mosquitto_pub <literal>-t</literal> sensors/cc128 <literal>-l</literal></para></listitem>
- </itemizedlist>
- </refsect1>
- <refsect1>
- <title>Files</title>
- <variablelist>
- <varlistentry>
- <term><filename>$XDG_CONFIG_HOME/mosquitto_pub</filename></term>
- <term><filename>$HOME/.config/mosquitto_pub</filename></term>
- <listitem>
- <para>Configuration file for default options.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Bugs</title>
- <para><command>mosquitto</command> bug information can be found at
- <ulink url="https://github.com/eclipse/mosquitto/issues"/></para>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <simplelist type="inline">
- <member>
- <citerefentry>
- <refentrytitle><link xlink:href="mqtt-7.html">mqtt</link></refentrytitle>
- <manvolnum>7</manvolnum>
- </citerefentry>
- </member>
- <member>
- <citerefentry>
- <refentrytitle><link xlink:href="mosquitto_rr-1.html">mosquitto_rr</link></refentrytitle>
- <manvolnum>1</manvolnum>
- </citerefentry>
- </member>
- <member>
- <citerefentry>
- <refentrytitle><link xlink:href="mosquitto_sub-1.html">mosquitto_sub</link></refentrytitle>
- <manvolnum>1</manvolnum>
- </citerefentry>
- </member>
- <member>
- <citerefentry>
- <refentrytitle><link xlink:href="mosquitto-8.html">mosquitto</link></refentrytitle>
- <manvolnum>8</manvolnum>
- </citerefentry>
- </member>
- <member>
- <citerefentry>
- <refentrytitle><link xlink:href="libmosquitto-3.html">libmosquitto</link></refentrytitle>
- <manvolnum>3</manvolnum>
- </citerefentry>
- </member>
- <member>
- <citerefentry>
- <refentrytitle><link xlink:href="mosquitto-tls-7.html">mosquitto-tls</link></refentrytitle>
- <manvolnum>7</manvolnum>
- </citerefentry>
- </member>
- </simplelist>
- </refsect1>
- <refsect1>
- <title>Author</title>
- <para>Roger Light <email>roger@atchoo.org</email></para>
- </refsect1>
- </refentry>
|