NAME
XAS::Lib::WS::RemoteShell - A class for the XAS environment
SYNOPSIS
use XAS::Lib::WS::RemoteShell;
my $wsman = XAS::Lib::WS::RemoteShell->new(
-username => 'Administrator',
-password => 'password',
-url => 'http://localhost:5985/wsman',
);
# this appears to be the sequence that winrs uses.
if ($wsman->create()) {
$wsman->command('dir');
$wsman->receive();
$wsman->signal();
$wsman->delete();
}
printf("%s", $wsman->stdout);
printf("exit code: %s\n", $wsman->exitcode);
DESCRIPTION
This package implements a client for the RemoteShell feature of WS-Manage. Getting the RemoteShell feature working under Windows is not easy. The reasons for these problems may be hidden in a Knowledge Base articule on MSDN. These problems are mostly related to authentication and quirks of the winrm server.
On Windows 2013 R2 the "Windows Remote Management Server" needs to be configured as follows:
From a powershell console.
ps> cd WSman:\localhost\
ps> cd Client
ps> set-item AllowUnencrypted $true
ps> set-item TrustedHosts "*"
ps> dir
ps> cd ..\Service
ps> set-item AllowUnencrypted $true
ps> cd Auth
ps> set-item Basic $true
ps> dir
ps> cd ..
ps> dir
ps> cd ..
Other versions of Windows are done similarily. This will allow connections from a none Windows box. These connections will be in clear text. This should not be used on the public internet.
This configuration will allow for an unencrypted HTTP connection with BASIC Authentication to a local user account, on the target box. You may wish to use the local Administrator account.
The usage of SSL for security will require additional configuration. Which is not documented well. By default, Windows doesn't listen on port 5986.
Using a Domain account requires kerberos authentication. I have not gotten this to work with RemoteShell. It may require additional configuration for that to work. But this configuration is not documented. Hence, the current usage. Once again, refer to that mythical Knowledge Base articule on MSDN.
The Linux version (OpenWSMAN v2.2.3) doesn't implement the RemoteShell feature.
METHODS
new
This class inherits from XAS::Lib::WS::Base and takes the same parameters. The parameters:
-keep_alive
-auth_method
Have been defaulted to approbriate values.
create
This method makes the initial connection to the server and creates a remote shell. It returns TRUE if it was successful.
command($command)
This method will send a command to the server to be executed by the shell.
send
This method will send a buffer to the remote shell.
receive
This method will receive output from the remote shell. This will include output for STDOUT and STDERR. The exit code will also be retrieved from the command.
signal
This method will send a "terminate" signal to the remote shell.
delete
This method will delete the remote shell.
stdout
This method returns the output from STDOUT.
stderr
This method returns the output from STDERR.
exitcode
This method returns the exit code.
check_exitcode
This method will check the exit code. If the code is greater then 0 it will try to parse the stderr stream looking for a reason. This method throws an exception with the exit code and the parsed stderr.
SEE ALSO
AUTHOR
Kevin L. Esteb, <kevin@kesteb.us>
COPYRIGHT AND LICENSE
Copyright (c) 2012-2016 Kevin L. Esteb
This is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0. For details, see the full text of the license at http://www.perlfoundation.org/artistic_license_2_0.