.\" $NetBSD: wpa_cli.8,v 1.5 2019/06/19 03:23:56 gutteridge Exp $
.\"
.\" Copyright (c) 2005 Sam Leffler <sam@errno.com>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" Based on:
.\" $FreeBSD: /repoman/r/ncvs/src/usr.sbin/wpa/wpa_cli/wpa_cli.8,v 1.2 2005/06/27 06:40:43 ru Exp $
.\"
.Dd June 19, 2019
.Dt WPA_CLI 8
.Os
.Sh NAME
.Nm wpa_cli
.Nd text-based frontend program for interacting with wpa_supplicant
.Sh SYNOPSIS
.Nm
.Op Ar commands
.Sh DESCRIPTION
The
.Nm
utility
is a text-based frontend program for interacting with
.Xr wpa_supplicant 8 .
It is used to query current status,
change configuration,
trigger events,
and
request interactive user input.
.Pp
The
.Nm
utility
can show the
current authentication status,
selected security
mode, dot11 and dot1x MIBs, etc.
In addition,
.Nm
can configure EAPOL state machine
parameters and trigger events such as reassociation
and IEEE 802.1X logoff/logon.
.Pp
The
.Nm
utility
provides an interface to supply authentication information
such as username and password when it is not provided in the
.Xr wpa_supplicant.conf 5
configuration file.
This can be used, for example, to implement
one-time passwords or generic token card
authentication where the authentication is based on a
challenge-response that uses an external device for generating the
response.
.Pp
The
.Nm
utility
supports two modes: interactive and command line.
Both modes share the same command set and the main difference
is that in interactive mode,
.Nm
provides access to unsolicited messages
(event messages, username/password requests).
.Pp
Interactive mode is started when
.Nm
is executed without any parameters on the command line.
Commands are then entered from the controlling terminal in
response to the
.Nm
prompt.
In command line mode, the same commands are
entered as command line arguments.
.Pp
The control interface of
.Xr wpa_supplicant 8
can be configured to allow
non-root user access by using the
.Va ctrl_interface_group
parameter
in the
.Xr wpa_supplicant.conf 5
configuration file.
This makes it possible to run
.Nm
with a normal user account.
.Sh AUTHENTICATION PARAMETERS
When
.Xr wpa_supplicant 8
needs authentication parameters, such as username and password,
that are not present in the configuration file, it sends a
request message to all attached frontend programs, e.g.,
.Nm
in interactive mode.
The
.Nm
utility
shows these requests with a
.Dq Li CTRL-REQ- Ns Ao Ar type Ac Ns Li - Ns Ao Ar id Ac Ns Li : Ns Aq Ar text
prefix, where
.Aq Ar type
is
.Li IDENTITY , PASSWORD ,
or
.Li OTP
(one-time password),
.Aq Ar id
is a unique identifier for the current network, and
.Aq Ar text
is description of the request.
In the case of a
.Li OTP
(One Time Password) request,
it includes the challenge from the authentication server.
.Pp
A user must supply
.Xr wpa_supplicant 8
the needed parameters in response to these requests.
.Pp
For example,
.Bd -literal -offset indent
CTRL-REQ-PASSWORD-1:Password needed for SSID foobar
\*[Gt] password 1 mysecretpassword
Example request for generic token card challenge-response:
CTRL-REQ-OTP-2:Challenge 1235663 needed for SSID foobar
\*[Gt] otp 2 9876
.Ed
.Sh COMMANDS
The following commands may be supplied on the command line
or at a prompt when operating interactively.
.Bl -tag -width indent
.It Ic status
Report the current WPA/EAPOL/EAP status for the current interface.
.It Ic mib
Report MIB variables (dot1x, dot11) for the current interface.
.It Ic help
Show usage help.
.It Ic status
Get current WPA/EAPOL/EAP status.
.It Ic add_network
Add a network. Returns a number to be used in set_network commands.
.It Ic set_network Ar network_id ssid Ar my_ssid_name
Make network_id use the SSID my_ssid_name.
.It Ic set_network Ar network_id psk Ar my_ssid_password
Make network_id use the password my_ssid_password
.It Ic enable_network Ar network_id
Begin using the network at network_id.
.It Ic list_network
List the networks configured.
.It Ic scan
Begin a scan of nearby APs. Results can be obtained with
.Ic scan_results .
.It Ic interface Op Ar ifname
Show available interfaces and/or set the current interface
when multiple are available.
.It Ic level Ar debug_level
Change the debugging level in
.Xr wpa_supplicant 8 .
Larger numbers generate more messages.
.It Ic license
Display the full
license for
.Nm .
.It Ic logoff
Send the IEEE 802.1X EAPOL state machine into the
.Dq logoff
state.
.It Ic logon
Send the IEEE 802.1X EAPOL state machine into the
.Dq logon
state.
.It Ic set Op Ar settings
Set variables.
When no arguments are supplied, the known variables and their settings
are displayed.
.It Ic pmksa
Show the contents of the PMKSA cache.
.It Ic reassociate
Force a reassociation to the current access point.
.It Ic reconfigure
Force
.Xr wpa_supplicant 8
to re-read its configuration file.
.It Ic preauthenticate Ar BSSID
Force preauthentication of the specified
.Ar BSSID .
.It Ic identity Ar network_id identity
Configure an identity for an SSID.
.It Ic password Ar network_id password
Configure a password for an SSID.
.It Ic otp Ar network_id password
Configure a one-time password for an SSID.
.It Ic terminate
Force
.Xr wpa_supplicant 8
to terminate.
.It Ic quit
Exit
.Nm .
.El
.Sh SEE ALSO
.Xr wpa_supplicant.conf 5 ,
.Xr wpa_passphrase 8 ,
.Xr wpa_supplicant 8
.Sh EXAMPLES
A sample run of discovering and connecting to a network
with SSID "MyWifiNetwork" and with a password "MyWifiPassword".
.Pp
If wpa_supplicant isn't already running, start it with the command
.Ic service wpa_supplicant onestart .
.Pp
Find the network
.Bd -literal -offset indent
.Ic scan
.Ic scan_results
17:07:08.868: bssid / frequency / signal level / flags / ssid
14:aa:ff:ee:aa:cc 2437 187 [WPA-PSK-CCMP+TKIP][ESS] MyWifiNetwork
44:ee:ff:bb:33:33 2452 168 [WPA2-PSK-CCMP][ESS] SomeOtherNetwork
.Ed
.Pp
Now, let's create a network and configure it.
.Bd -literal -offset indent
.Ic add_network
17:08:13.047: 1
.Ed
.Pp
That means the new network_id we should use is 1.
.Bd -literal -offset indent
.Ic set_network 1 ssid \[dq]MyWifiNetwork\[dq]
.Ic set_network 1 psk \[dq]MyWifiPassword\[dq]
.Ic enable_network 1
.Ed
.Pp
After this point, you should be connected, but no IP address
is configured. You will likely want to configure the address using
.Xr dhcpcd 8 .
.Sh HISTORY
The
.Nm
utility first appeared in
.Nx 4.0 .
.Sh AUTHORS
The
.Nm
utility was written by
.An Jouni Malinen Aq Mt jkmaline@cc.hut.fi .
This manual page is derived from the
.Pa README
file included in the
.Nm wpa_supplicant
distribution.