.\"
.hys 50
.TH "clogin" "1" "5 May 2020"
.SH NAME
clogin \- Cisco login script
.SH SYNOPSIS
.B clogin
[\fB\-autoenable\fP]
[\fB\-noenable\fP]
[\fB\-dhiSV\fR]
[\fB\-m|M\fR]
[\c
.BI \-c\ 
command]
[\c
.BI \-E\ 
var=x]
[\c
.BI \-e\ 
enable-password]
[\c
.BI \-f\ 
cloginrc-file]
[\c
.BI \-p\ 
user-password]
[\c
.BI \-s\ 
script-file]
[\c
.BI \-t\ 
timeout]
[\c
.BI \-u\ 
username]
[\c
.BI \-v\ 
vty-password]
[\c
.BI \-w\ 
enable-username]
[\c
.BI \-x\ 
command-file]
[\c
.BI \-y\ 
ssh_cypher_type]
router
[router...]
.SH DESCRIPTION
.B clogin
is an
.BR expect (1)
script to automate the process of logging into a Cisco router,
Catalyst switch, Arista switch, Extreme switch, Juniper ERX/E-series,
or Redback router.
There are complementary scripts for
A10,
Alteon,
Avocent (Cyclades),
Bay Networks (nortel),
Brocade,
Cisco Small Business devices,
ADC-kentrox EZ-T3 mux,
Fortinet firewalls,
Foundry,
Cisco Firepower,
HP Procurve switches and Cisco AGMs,
Hitachi routers,
Juniper Networks,
MRV optical switch,
Mikrotik routers,
Netscreen firewalls,
Nokia (Alcatel-Lucent),
Netscaler,
Riverbed Steelhead,
Riverstone,
Netopia,
Cisco WLCs,
Extreme devices
and Xirrus arrays or Arrcus routers,
named
.B a10login,
.B alogin,
.B avologin,
.B blogin,
.B brlogin,
.B csblogin,
.B elogin,
.B flogin,
.B fnlogin,
.B fxlogin,
.B hlogin,
.B htlogin,
.B jlogin,
.B mrvlogin,
.B mtlogin,
.B nlogin,
.B noklogin,
.B nslogin,
.B rblogin,
.B rivlogin,
.B tlogin,
.B wlogin,
.B xlogin,
and
.B xilogin,
respectively.
Lastly,
.B plogin
is a poly-login script using the
.BR router.db (5)
files of rancid groups and the
.BR rancid.types.base (5)
and
.BR rancid.types.conf (5)
files to determine which login script to execute for the device type of
the given device.
.PP
.B clogin
reads the
.IR .cloginrc
file for its configuration, then connects and logs into each of the
routers specified on the command line in the order listed.  Command-line
options exist to override some of the directives found in the
.IR .cloginrc
configuration file.
.PP
The command-line options are as follows:
.TP
.B \-S
Save the configuration on exit, if the device prompts at logout time.
This only has affect when used with \-c.
.TP
.B \-V
Prints package name and version strings.
.\"
.TP
.B \-c
Command to be run on each router list on the command-line.  Multiple
commands maybe listed by separating them with semi-colons (;).  The argument
should be quoted to avoid shell expansion.
.\"
.TP
.B \-d
Enable expect debugging.
.\"
.TP
.B \-E
Specifies a variable to pass through to scripts (\-s).  For example, the
command-line option \-Efoo=bar will produce a global variable by the name
Efoo with the initial value "bar".
.\"
.TP
.B \-e
Specify a password to be supplied when gaining enable privileges on the
router(s).  Also see the password directive of the
.IR .cloginrc
file.
.\"
.TP
.B \-f
Specifies an alternate configuration file.  The default is
.IR "$HOME/.cloginrc" .
.\"
.TP
.B \-h
Display usage line and exit.
.\"
.TP
.B \-i
Enter interactive mode after processing -[cx] options.
.\"
.TP
.B \-[mM]
Display
.IR .cloginrc
information for matching lines; either the first match (-m) or all
matches (-M), then exit.
The display format is:
.sp
look-up variable:filename:line number: glob
.\"
.TP
.B \-p
Specifies a password associated with the user specified by the
.B \-u
option, user directive of the
.IR .cloginrc
file, or the Unix username of the user.
.\"
.TP
.B \-s
The filename of an
.BR expect (1)
script which will be sourced after the login is successful and is expected
to return control to
.B clogin,
with the connection to the router intact, when it is done.  Note that
.B clogin
disables
.IR log_user
of
.BR expect (1) when
.B \-s
is used.
Example script(s) can be found in share/rancid/*.exp.
.\"
.TP
.B \-t
Alters the timeout interval; the period that
.B clogin
waits for an individual command to return a prompt or the login process to
produce a prompt or failure.  The argument is in seconds.
.\"
.TP
.B \-u
Specifies the username used when prompted.  The command-line option overrides
any user directive found in
.IR .cloginrc .
The default is the current Unix username.
.\"
.TP
.B \-v
Specifies a vty password, that which is prompted for upon connection
to the router.  This overrides the vty password of the
.IR .cloginrc
file's password directive.
.\"
.TP
.B \-w
Specifies the username used if prompted when gaining enable privileges.  The
command-line option overrides any user or enauser directives found in
.IR .cloginrc .
The default is the current Unix username.
.\"
.TP
.B \-x
Similar to the
.B \-c
option;
.B \-x
specifies a file with commands to run on each of the routers.  The commands
must not expect additional input, such as 'copy rcp startup-config' does.
For example:
.PP
.in +1i
.nf
show version
show logging
.fi
.in -1i
.\"
.TP
.B \-y
Specifies the encryption algorithm for use with the
.BR ssh (1)
\-c option.  The default encryption type is often not supported.  See the
.BR ssh (1)
man page for details.  The default is 3des.
.\".El
.\"
.SH RETURNS
If the login script fails for any of the devices on the command-line, the
exit value of the script will be non-zero and the value will be the number
of failures.
.\"
.SH ENVIRONMENT
.B clogin
recognizes the following environment variables.
.PP
.TP
.B CISCO_USER
Overrides the user directive found in the
.IR .cloginrc
file, but may be overridden by the
.B \-u
option.
.\"
.TP
.B CLOGIN
.B clogin
will not change the banner on your xterm window if this includes the
character 'x'.
.\"
.TP
.B CLOGINRC
Specifies an alternative location for the
.IR .cloginrc
file, like the \fB\-f\fP option.
.\"
.TP
.B HOME
Normally set by
.BR login (1)
to the user's home directory,
HOME is used by
.B clogin
to locate the
.IR .cloginrc
configuration file.
.\".El
.SH FILES
.ta \w'xHOME/xcloginrc  'u 
\fI$HOME/.cloginrc\fR   Configuration file.
.SH "SEE ALSO"
.BR cloginrc (5),
.BR expect (1)
.\"
.SH CAVEATS
.B clogin
expects CatOS devices to have a prompt which includes a '>',
such as "router> (enable)".  It uses this to determine, for example,
whether the command to disable the pager is "set length 0" or "term length 0".
.PP
The HP Procurve switches that are Foundry OEMs use flogin, not hlogin.
.PP
The \-S option is a recent addition, it may not be supported in all of the
login scripts or for every target device.
.\"
.SH BUGS
Do not use greater than (>) or pound sign (#) in device banners or hostnames
or prompts.  These are the normal terminating characters of device prompts
and the login scripts need to locate the initial prompt.  Afterward, the full
prompt is collected and makes a more precise match so that the scripts know
when the device is ready for the next command.
.PP
All these login scripts for separate devices should be rolled into one.
This goal is exceedingly difficult.
.PP
The HP Procurve switch, Motorola BSR, and Cisco AGM CLIs rely heavily upon
terminal escape codes for cursor/screen manipulation and assumes a vt100
terminal type.
They do not provide a way to set a different terminal type or adjust this
behavior.
The resulting escape codes make automating interaction with these devices
very difficult or impossible.
Thus bin/hpuifilter, which must be found in the user's PATH, is used by
hlogin to filter these escape sequences.
While this works for rancid's collection, there are side effects for
interactive logins via hlogin; most of which are formatting annoyances that
may be remedied by typing CTRL-R to reprint the current line.
.PP
WARNING: repeated ssh login failures to HP Procurves cause the switch's
management interface to lock-up (this includes snmp, ping) and sometimes
it will crash.  This is with the latest firmware; 5.33 at the time of this
writing.