@node VTY shell
@chapter VTY shell

@command{vtysh} is integrated shell of Quagga software.

To use vtysh please specify ---enable-vtysh to configure script.  To use
PAM for authentication use ---with-libpam option to configure script.

vtysh only searches @value{INSTALL_PREFIX_ETC} path for vtysh.conf which
is the vtysh configuration file.  Vtysh does not search current
directory for configuration file because the file includes user
authentication settings.

Currently, vtysh.conf has only two commands.

@menu
* VTY shell username::
* VTY shell integrated configuration::
@end menu

@node VTY shell username
@section VTY shell username

@deffn {Command} {username @var{username} nopassword} {}

With this set, user foo does not need password authentication for user vtysh.
With PAM vtysh uses PAM authentication mechanism.

If vtysh is compiled without PAM authentication, every user can use vtysh
without authentication. vtysh requires read/write permission
to the various daemons vty sockets, this can be accomplished through use
of unix groups and the --enable-vty-group configure option.

@end deffn

@node VTY shell integrated configuration
@section

@deffn {Command} {service integrated-vtysh-config} {}
Write out integrated Quagga.conf file when 'write file' is issued.

This command controls the behaviour of vtysh when it is told to write out
the configuration.  Per default, vtysh will instruct each daemon to write
out their own config files when @command{write file} is issued.  However, if
@command{service integrated-vtysh-config} is set, when @command{write file}
is issued, vtysh will instruct the daemons will write out a Quagga.conf with
all daemons' commands integrated into it. 

Vtysh per default behaves as if @command{write-conf daemon} is set. Note
that both may be set at same time if one wishes to have both Quagga.conf and
daemon specific files written out. Further, note that the daemons are
hard-coded to first look for the integrated Quagga.conf file before looking
for their own file.

We recommend you do not mix the use of the two types of files. Further, it
is better not to use the integrated Quagga.conf file, as any syntax error in
it can lead to /all/ of your daemons being unable to start up. Per daemon
files are more robust as impact of errors in configuration are limited to
the daemon in whose file the error is made.

@end deffn
