How to use telnet on the command line. Methods for connecting to remote devices using the telnet command

The Telnet protocol is a standard for exchanging data between two network devices, designed to implement remote control. Not everyone knows what the setting is Wi-Fi router can be done via Telnet from any computer local network. To do this, it is necessary that the Telnet access option is enabled in the router, and it must be enabled via the web interface.

An interesting fact is that sometimes you can log into the router using Telnet, while access is via HTTP, that is, via GUI, remains unavailable.

Condition for being able to connect to the router

If you want to go to the router management interface, you first need to find out what the IP address of this device is. Without an IP address, you won’t even be able to open a Telnet session, let alone access it through a browser. Most network harvesters have the following address by default: 192.168.1.1. For D-Link you need to make a correction in the last two digits (should be “0.1”). Set up network card PC to the appropriate values, changing the last digit of its IP.

Setting up a connection on a computer

How to open a communication session

Every operating system has a command line. Once you launch it, you just need to run one command: telnet 192.168.1.1. After which the router, connected to the PC via Ethernet or Wi-Fi, immediately responds to us, asking for a login and password.

Starting a communication session

In our response, we used the name “admin” and password “1234”, that is, the default values ​​​​in ZyXEL devices. As you can see, these values ​​were accepted and the “config” prompt appeared.

Some ZyXEL models use not only a text interface, but also team list(menu):

Start list view

To return to text command mode, go to 28 -> 4 (use step 28 and then step 4). As a result, you will receive the inscription “config” and a cursor for entering commands. In what follows, we will consider only this mode.

Configuring the device via Telnet

The text command interface, that is, the command line of routers and other ZyXEL devices, is called the word “CLI” (Command Line Interpreter). Most of the commands for all models are the same, for example, “system reboot” (reboot), “system config-save” (save settings), and others. Some commands for a particular model may differ, and download detailed guide You can go to the support site, in the same place where they provide proprietary firmware for downloading.

Download the directory with commands

Devices from companies other than ZyXEL provide a “help” command, which gives you a list of available commands.

Remote access to the web interface

The WAN port of the network harvester is assigned an IP address. Meaning given address usually does not change, even if dynamic addresses are used. Knowing his IP address, the user can open the device management interface from any computer with an Internet connection. By default, a similar access method in ZyXEL routers prohibited. And the command line will help you get rid of this limitation.

Type the following command: ip static tcp ISP 80 192.168.1.1 80 // port “80” is used by the web interface.

The “ip static” command actually creates a binding of local addresses to global IP addresses. Note that if you are using a type of connection where authorization is provided (PPTP, L2TP or PPPoE), then instead of the word “ISP” you must substitute another name. It’s easy to find out: Interface ?// all network interfaces will be displayed.

For the PPPoE protocol, the Internet connection interface is usually named “PPPoE0” (case is important). Don't forget to save the settings (system config-save). As a result, it will be possible to open the web interface from the Internet.

The interface opened from the “external”

Some providers block port 80, so it probably won’t work the first time. But you can do it more cunningly by redirecting external port number 8080 to internal port 80: ip static tcp ISP 8080 192.168.1.1 80 // this way we bypass the provider’s restrictions.

In general, the port for Telnet is forwarded in a similar way (its number is “23”).

A sea of ​​commands for Wi-Fi

The easiest way to start mastering the command line is to use those commands that are responsible for the parameters of the access point ( Wi-Fi networks). Each of these commands begins with the word “interface”, and then there is a qualifying sequence. The simplest option: interface ssid SYSDAY // the name of the wireless network will be set to “SYSDAY”.

Note that by specifying the “auto” parameter instead of the name, you can return the “access point” to the SSID value that was set at the factory.

There are several more interesting commands that control the radio module. To avoid typing the word “interface” every time, use it as a separate command (the prompt is transformed into “config-if”). We provide a list of commands used in the “config-if” mode below.

Examples of commands for Wi-Fi

  • power number // instead of the word “number”, set the power as a percentage;
  • channel number // instead of “number”, specify the radio channel number (1-13);
  • country-code country // the “country” parameter contains 2 letters, for example, RU;
  • hide-ssid // hide network name;
  • no hide-ssid // open network name.

And this is not a complete list of parameters that can be changed directly from the command line.

It should be noted that using Telnet you can change or enable the Wi-Fi encryption algorithm (WPA or WPA2).

And the key value is set by the “interface authentication wpa-psk” command. Thus, it becomes possible to log into the router remotely, from anywhere in the world, via Telnet, and change the password to wireless network. Very useful, isn't it?

Telnet to the router-modem

Teams telnet allow you to communicate with a remote computer using the Telnet protocol. You can run the command telnet without parameters to enter the telnet context indicated on the Telnet command line ( telnet). IN command line Telnet Use the following commands to control the computer running the Telnet client.

Teams tlntadmn allow you to remotely control a computer running a Telnet server. These commands are executed from the command line. Team tlntadmn without parameters displays the local server setting.

To use commands telnet from the Telnet command line

To launch the Telnet client and enter the Telnet command line

Syntax

telnet [\\ remote server]

Options \\ remote server Displays the name of the connected server /?

  • When using the command telnet The Telnet client starts without parameters.
  • At the Telnet command line, you must use Telnet commands.

To stop the Telnet client

Syntax

Options

none

Notes

  • This command can be shortened to q.

To connect a Telnet client to a remote computer

Syntax

open [\\ remote server] [port]

Options \\ remote server port Indicates the port to use. If no port is specified, the default port is used. Notes

  • This command can be shortened to o.
Examples

To connect to the remote Redmond server on port 44, enter at the command prompt: redmond 44

To disconnect the Telnet client from a remote computer

Syntax

close [\\ remote server]

Options \\ remote server Specifies the name of the managed server. If no server is specified, the local server is used. Notes

  • This command can be shortened to c.
Examples

To disconnect from the remote Redmond server, enter the command: redmond 44

To configure Telnet client settings

Syntax

set [\\ remote server] [ntlm] [localecho] [term {ansi | vt100 | vt52 | vtnt}] [escape symbol] [logfile file name] [logging] [bsasdel] [crlf] [delasbs] [mode {console | stream}] [? ]

Options \\ remote server Specifies the name of the managed server. If no server is specified, the local server is used. ntlm Enables NTML authentication if it is available on the remote server. localecho Enables local command display mode. term {ansi | vt100 | vt52 | vtnt) Specifies a terminal of the specified type. escape symbol Specifies the control character. The control character can be a single character or a combination of the CTRL key and a character. To set a key combination, hold down the CTRL key while typing the character you want to assign. logfilefile name Specifies the Telnet activity log file. The log file must be located on your local computer. Logging starts automatically after selecting this option. logging Enables logging. If a log file is not specified, an error message is displayed. bsasdel Specifies the BACKSPACE key to delete. crlf Assigns a new linear mode that defines the ENTER key as 0x0D, 0x0A. delasbs Assigns the DELETE key to delete the last character. mode {console | stream) Sets the operating mode. ? Allows you to view the full command syntax. Notes

  • To disable a previously assigned setting, at the Telnet command prompt, enter:

    unset [parameter]

  • To assign a control character, enter the command:

    -e symbol

  • In non-English versions of Telnet, the command is available codeset parameter. Codeset parameter specifies the current code set for the parameter, which can be one of the following: Shift JIS, Japanese EUC, JIS Kanji, JIS Kanji (78), DEC Kanji, NEC Kanji. You must assign the same code set on the remote computer.

To send Telnet client commands

Syntax

send [\\ remote server] [ao] [ayt] [esc] [ip] [synch] [? ]

Options \\ remote server The name of the server that you want to manage. If no server is specified, the local server is used. ao Cancels an input command. ayt Sends the command "Are you there?" esc Sends the current control character. ip Aborts execution of a processing command. synch Performs a Telnet synchronization operation. ? Allows you to view the full command syntax.

To view the current Telnet client settings

Syntax display

Options

None

Notes

  • This command displays the current operating parameters for the Telnet client. When operating in Telnet session mode (in other words, while connected to a Telnet server), you can exit the session to change settings by pressing CTRL+]. To return to the Telnet session, press ENTER.

To use commands tlntadmn from the command line

To administer a computer running Telnet server/P>Syntax

tlntadmn [\\ remote server] [start] [stop] [pause] [continue]Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. start Starts the Telnet server. stop Stops the Telnet server. pause Terminates the Telnet server. continue Restarts the Telnet server. /?

  • Using commands tlntadmn tlntadmn

To administer Telnet sessions

Syntax

tlntadmn [\\ remote server] [-s] [-k{session_code | all}] [-m {session_code |all} " message" ]

Options \\ remote server -s Displays active Telnet sessions. -k{session_code | all) Ends sessions. Enter a session code to end a specific session or enter all to end all sessions. -m {session_code | all} " message" Sends a message to one or more sessions. Enter a session code to send a message to a specific session, or enter all to send a message to all sessions. Type the message you want to send in quotes (i.e. " message" ). /? Displays help on the command line. Notes

  • Using commands tlntadmn you can remotely administer a computer running a Telnet server if both computers are running Windows control XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.

To set event log settings for the computer running Telnet Server

Syntax

tlntadmn [\\ remote_computer] config [auditlocation={eventlog | file | both}][audit=[{+ | - } admin][{+ | - } user][{+ | - } fail]]

Options \\ remote server auditlocation={eventlog | file | both) Specifies whether event information should be sent to the Event Viewer, to a file, or to both. audit=[{+ | - } admin][{+ | - } user][{+ | - } fail] Specifies which events require auditing (administrator logon events, user logon events, or failed logon attempts). To audit a specific event type, enter a plus sign (+) in front of the event type. To stop auditing of a specific event type, enter a minus sign (-) in front of the event type. /?

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.
  • If you specify where to send event information without specifying the information type or types to be audited, only administrator log event information will be audited and sent to the specified location.
Examples

To send event information to the Event Viewer, enter:

tlntadmn config auditlocation=eventlog

To audit administrator logon events and failed logon attempts, enter:

tlntadmn config audit=+admin +fail

To set the primary domain for the computer running Telnet Server

Syntax

tlntadmn [\\ remote server] config [dom=domain name]Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. dom=domain name Specifies the domain that you want to make primary. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.
Examples

To make the Redmond domain the primary domain on your local server, enter:

tlntadmn config dom=Redmond

To map the ALT key to the computer running the Telnet server

Syntax

tlntadmn [\\ remote server] config [ctrlakeymap={yes | no}]

Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. ctrlakeymap={yes | no) Indicates whether the Telnet server should interpret the CTRL+A key combination as ALT. Enter yes to map a keyboard shortcut or no to refuse matching. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.
  • If the ALT key is not mapped, the Telnet server does not send the ALT keystroke to applications where it might be needed.

To set the maximum number of connections for the computer running Telnet Server

Syntax

tlntadmn [\\ remote server] config [maxconn=positive_integer]

Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. maxconn=positive_integer Sets the maximum number of connections. This number can be specified using any positive integer less than 10 million. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.

To set the maximum number of failed access attempts for the computer running the Telnet server

Syntax

tlntadmn [\\ remote_computer] config [maxfail=positive_integer]

Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. maxfail= positive_integer Sets the maximum number of failed login attempts allowed for a user. This number can be specified using any positive integer less than 100. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.

To set the operating mode for the computer running the Telnet server

Syntax

tlntadmn [\\ remote server] config [mode={console | stream}]

Options \\ remote server mode {console | stream) Indicates the operating mode. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.

To set the Telnet port for the computer running the Telnet server

Syntax

tlntadmn [\\ remote server] config [port=integer_value]

Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. port=integer_value Specifies the Telnet port. The port can be specified using any integer less than 1024. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.

To set authentication methods for the computer running the Telnet server

Syntax

tlntadmn [\\ remote server] config [sec=[{+ | - } ntlm][{+ | - } passwd]]Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. sec=[{+ | - } ntlm][{+ | - } passwd] Specifies whether NTML or password authentication is used, or both, to authenticate login attempts. To use a specific authentication type, enter a (+) sign in front of the authentication type. To prevent a specific type of authentication from being used, enter a (-) sign in front of that type. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.
  • NTML is an authentication protocol for transactions between two computers, one or both of which are running Windows NT 4.0 and earlier. Additionally, the NTML authentication protocol is used for computers that are not part of a domain, such as independent servers and workgroups.

To set the idle session timeout for the computer running the Telnet server

Syntax

tlntadmn [\\ remote server] config [timeout=hh: mm: ss]

Options \\ remote server Specifies the name of the server that you want to take control of. If no server is specified, the local server is used. timeout=hh: mm: ss Sets the elapsed time value in hours, minutes, and seconds. /? Displays help on the command line. Notes

  • Using commands tlntadmn You can remotely administer a computer running Telnet Server if both computers are running Windows XP. Teams tlntadmn cannot be used to remotely administer a Telnet server running Windows 2000 from a computer running Windows XP.
Notes
  • To switch from the Telnet client to command mode, at the Telnet command prompt, press CTRL+]. To return to the Telnet client, press ENTER.

One of the protocols for transmitting data over the network is Telnet. By default, it is disabled in Windows 7 for greater security. Let's figure out how to activate, if necessary, the client of this protocol in the specified operating system.

Telnet transmits data through a text interface. This protocol is symmetrical, meaning there are terminals at both ends. This is related to the features of client activation, the various implementation options for which we will discuss below.

Method 1: Enable the Telnet component

The standard way to start the Telnet client is to activate the corresponding Windows component.

  1. Click "Start" and go to "Control Panel".
  2. Next, go to the section "Uninstall a program" in the block "Programs".
  3. In the left area of ​​the window that appears, click “Enabling or disabling components...”.
  4. The corresponding window will open. You will need to wait a little while the list of components is loaded into it.
  5. After the components are loaded, find the elements among them "Telnet server" And "Telnet Client". As we have already said, the protocol being studied is symmetrical, and therefore for correct operation it is necessary to activate not only the client itself, but also the server. Therefore, check the boxes next to both of the above items. Next click "OK".
  6. The procedure for changing the corresponding functions will be carried out.
  7. After these steps, the Telnet service will be installed, and the telnet.exe file will appear at the following location:

    C:\Windows\System32

    You can launch it as usual by double-clicking on it with the left mouse button.

  8. After these steps, the Telnet client console will open.

Method 2: "Command Line"

You can also launch the Telnet client using the options "Command line".


But if the component itself is not activated, then this procedure can be done without opening the window for enabling components, but directly from "Command line".


Unfortunately, this method may not work in all editions. Therefore, if you were unable to activate the component via "Command line", then use the standard method described in Method 1.

Method 3: "Service Manager"

If you have already activated both Telnet components, then the required service can be started via "Service Manager".

  1. Let's go to "Control Panel". The algorithm for performing this task was described in Method 1. Click "System and safety".
  2. Open the section "Administration".
  3. Among the displayed names we are looking for "Services" and click on the specified element.

    There is also a faster launch option "Service Manager". Dial Win+R and enter in the field that opens:

    Click "OK".

  4. "Service Manager" launched. We need to find an element called "Telnet". To make this easier, let's build the contents of the list in alphabetical order. To do this, click on the column name "Name". Having found the desired object, click on it.
  5. In the active window in the drop-down list instead of the option "Disabled" select any other item. You can select a position "Automatically", but for security reasons we recommend using the option "Manually". Next click "Apply" And "OK".
  6. After that, returning to the main window "Service Manager", highlight the title "Telnet" and on the left side of the interface click "Run".
  7. The procedure for starting the selected service will be performed.
  8. Now in the column "State" opposite the name "Telnet" status will be set "Works". After this you can close the window "Service Manager".

Method 4: "Registry Editor"

In some cases, when you open the enable features window, you may not find any items in it. Then, to be able to run the Telnet client, you need to make certain changes in system registry. It must be remembered that any actions in this area of ​​the OS are potentially dangerous, and therefore we strongly recommend or before carrying out them.

  1. Dial Win+R, type into the area that opens:

    Click "OK".

  2. Will open "Registry Editor". In the left area, click on the section name "HKEY_LOCAL_MACHINE".
  3. Now go to the folder "SYSTEM".
  4. Next, go to the directory "CurrentControlSet".
  5. Then you should open the directory "Control".
  6. Finally, highlight the directory name "Windows". This will display the various parameters contained in the specified directory on the right side of the window. Find the DWORD value called "CSDVersion". Click on its name.
  7. An editing window will open. In it, instead of meaning "200" need to install "100" or «0» . After you do this, click "OK".
  8. As you can see, the value of the parameter in the main window has changed. Close "Registry Editor" in a standard way by clicking the close window button.
  9. Now you need to restart your PC for the changes to take effect. Close all windows and running programs, first saving active documents.
  10. After the computer is restarted, any changes made to "Registry Editor", will come into force. This means that you can now start the Telnet client in the standard way by activating the corresponding component.

As you can see, launching the Telnet client in Windows 7 is not particularly difficult. You can activate it either by turning on the corresponding component or through the interface "Command line". Is it true, last method doesn't always work. It is extremely rare that it is impossible to complete a task through activation of components due to the lack of necessary elements. But this problem can also be fixed by editing the registry.

As you can already see if you read my post about setting up Telnet on Windows, working with this service is quite easy. You can run it without arguments by specifying only the host system address on the command line. Under certain circumstances, you still need to specify a specific port. The first message that the user sees after executing the “telnet” command is sent by the program itself, and after communication is established between the client and the server, messages originating from the managed system are displayed. In this regard, with remote operating system you can work via Telnet in the same way as happens with other specialized programs for remote access to the OS. Now let's take a closer look at this service and look at the most commonly used Telnet commands.

The Telnet command line on a Windows client can accept the following commands:

open node port – used to establish a connection with a given node;

close – closes an existing connection;

quit – exit the current Telnet session;

display – allows you to view the current Telnet client settings;

set – with its help it is possible set Telnet parameters for the current session, and more specifically:

  • set ntlm will enable NTLM (using NTLM authentication integrated into Telnet when connecting a user from a remote computer allows you to avoid entering a login and password when logging in);
  • set localecho will enable local command output mode;
  • set term vt100/vt52/vtnt/ansi will set the specified terminal type (for example, VT100 is used to run regular command line programs, and VTNT is used to run advanced programs, such as “edit”);
  • The set escape character will set a sequence of keys that switches the session mode to the command mode (for example, set escape , then pressing the “Ctrl+P” and “Enter” keys will set Ctrl+P as the switch);
  • set logfile filename will point to a log file of current Telnet activity (this file must be located in file system control computer);
  • set logging will enable logging (the log file must be specified in advance by the above command, otherwise an error message will appear);

unset – executes disabling various Telnet session options(inverse operations in relation to set), namely:

  • unset ntlm will disable integrated authentication;
  • unset localecho deactivates local command output mode;

status – used to check if there is a connection to the Telnet client;

enter – used to go to an existing connected Telnet session;

Or help – displays help information.

Once you're done with things on the remote machine, you'll need to close the connection to it. However, Telnet itself does not always complete its work. To exit to the Telnet command line, use the hotkeys “Ctrl+]”.

Usage telnet commands provides the ability to establish a communication channel with computers at a distance.

And the utility itself is almost a kind of browser emulator in the terminal, supporting several network protocols.

Previously, telnet was often used to manage PCs running the Linux operating system.

And now, using the same utility, they test the network, check ports, manage routers and other IoT devices.

Content:

Features of the utility

Although main task telnet is to create a connection between distant friend from a friend PC using the same protocol, using the utility you can manage other services.

For example, access POP3, HTTP, IRC or SMTP.

After all, these and some other services operate on the basis of transport TCP protocol, to work with which you can use a telnet client.

Telnet command syntax when connecting to to a remote computer looks like this: $ telnet (options) (host) (port).

The host is the domain of the computer to which the connection is made. Port – port on the computer from which access is being made. And the options could be as follows:

  • -4 and -6 provide forced use ipv4 and ipv6 addresses, respectively;
  • -8 makes it possible to use 8-bit encoding;
  • -E disables support for escape sequences;
  • -a automatically registers the user on the remote system;
  • -d enables debugging mode;
  • -p enables rlogin emulation;
  • -e sets the initial escape character;
  • -l authorizes the user in the system.

After the connection with the remote host is established telnet utility starts working in one of two modes – line-by-line or character-by-character.

The first option is the most preferable due to the ability to edit the text directly and send it only after the user has completely typed in all the information.

The disadvantage of this line-by-line mode is the lack of support for it by some services. While character-by-character can be used in any case.

However, when using it, all information is sent instantly.

And if the user makes a mistake, it will be impossible to correct it - after all, even spaces and Backspace are sent to the server in the form of characters.

You should know: When using the telnet protocol, there is no possibility of encrypting information transfer. All data is sent directly and can be intercepted by an unauthorized user. And it is not recommended to transmit them in this way - it is advisable to use the secure Secure Shell network protocol for this.

Basic commands

When working with the telnet protocol, the user enters the appropriate commands into the console. The most popular include the following:

  • OPEN (PC name) (port). Allows you to communicate with the computer whose name is specified in the command. If you do not specify a port, the utility will try to use the default number. Sometimes it is indicated instead of the PC name;
  • DISPLAY (argument). Command to display a full or partial set of telnet utility parameters;
  • CLOSE. Designed to close the telnet session and return the system to command mode;
  • QUIT. Command to end all open connections and exit telnet;

Rice. 2. Using the Quit command in the MS Telnet client.

  • MODE TYPE. Used to control one of two input mode options (character-by-character or line-by-line). In this case, a request is sent to the remote computer to switch to a certain mode, and, if it is supported by the service, the corresponding switching is provided;
  • STATUS. A command that displays the current utility status, name and exchange mode;
  • ? (team). Reports information about the corresponding command sequence. It is needed in cases where the user is going to use a command that is unfamiliar to him;
  • ! (team). Executes a command sequence on the local system;
  • SEND ARGUMENTS. Sends character arguments to the remote PC;
  • ESCAPE. Sends one of the escape characters such as comma, bracket, or caret (^);
  • SYNCH. Serves to send a synch sequence that allows you to cancel all commands typed but not yet sent. Used only in line-by-line mode;
  • BRK. Sending a break sequence when the Break key is pressed.

All of these commands are basic, although their total number is much larger. However, due to the rather rare use of this utility, the easiest way to find a complete list of them is by entering HELP in the terminal.

Ah, after displaying full list, get help information about each command sequence using the "?" command.

Although, for example, for a telnet client on Windows, the list may be shortened.