The save_session.pl script in the apps/session directory illustrates how to create a session file.

You can modify the script and include it in your own application, or create a session file using the script on the command line, and then pass in that session file when running vSphere SDK for Perl commands. See Saving Sessions.

The session file does not reveal password information. If a session file is not used for 30 minutes, the session expires.

Procedure

  1. Connect to the directory where the script is located, for example, on Windows.
    cd C:\Program Files (x86)\VMware\VMware vSphere CLI\Perl\apps\session
  2. Run save_session.pl.

    You must supply connection parameters and the name of a session file in which the script can save an authentication cookie.

    perl save_session.pl --savesessionfile <location> --server <esxi_host>

    For example:

    perl save_session.pl --savesessionfile C:\Temp\my_session --server my_server

    If you specify a server but no user name or password, the script prompts you.

  3. You can now run scripts in the \apps or \samples directory or your own scripts and pass in the session file using the --sessionfile parameter as follows.
    <command> --sessionfile <sessionfile_location> <command_options>

    For example:

    perl hostinfo.pl --sessionfile C:\Temp\my_session
    Note: If you use a session file, any other connection parameters are ignored.

    You can use the code in the \apps\session\save_session.pl utility application inside your own vSphere SDK for Perl application. If a call to the server throws an exception, your application should terminate the session to avoid session leaks. You could do this with an error handler that runs disconnect() or logout(), like in the following example.

    eval {
        # ... insert program here ...
      };
      if ($@) {
        print "Fatal error: $@";
        Util::disconnect();
        exit(1);
      }

    You can also use the _END_ pseudo-signal handler to perform a disconnect, as follows.

    $SIG{__END__} = sub { Util::disconnect(); }