These tools are no longer actively maintained.  These scripts may only work with previous versions of iDRAC/LC or they may not address new functionality in the most recent releases of iDRAC/LC firmware or new PowerEdge Server platforms.

What is it?

WSL (a.k.a. "whistle") contains various scripts that serve as a client interface to WSMAN or “Web Services for Management“ protocol based on DMTF standard specification. WSMAN provides standards based messaging for systems management CIM-style objects. 


Why would I use it?

  • You are looking for a WSMAN client CLI.
  • WSL is "lightweight" because it is composed of shell scripts. That is, no binary to worry about.
  • It depends only on tools that are already present on standard installation or readily available to UNIX-like operating systems.
  • It can be used in automation but by default it operates to simplify interactive use.
  • It provides a simple method to store and use encrypted credential. It is light cryptography that offer alternative to clear text credential store.
  • It is open source. You are free to use and contribute in accordance to License attached.

How does the command look like?

Typing "wsl" will show you the help information.

WSL
Wsman Shell commandLine, version 0.1.0

USAGE: wsl COMMAND [PARAMS...]

COMMAND:
identify  - WS-Identify
enum      - WS-Enumerate
get       - WS-Get
put       - WS-Put
invoke    - WS-Invoke
xclean    - Delete all generated files
xcred     - Create or display credential file

PARAMS specification is specific to a COMMAND.

You can get more help for a particular command by typing the command, "wsl enum" for example will show you more help about enum. Some commands as you might notice use another script, for example "wsl enum" calls "wslenum".


What do I need to run it?

  • bash shell and other GNU core utilities such as sed, awk and grep
  • curl or wget - HTTP transfer utility (curl preferred)
  • xmllint - LIBXML2 utility
  • xsltproc - LIBXML2 utility for output formatting (optional)
  • gpg - encryption utility for password (optional)

It may run on Windows operating system by installing CYGWIN or similar port of GNU shell environment and tools.


How can I get it?

Terms of Use:  Modified BSD License
See:  attached LICENSE file

DOWNLOAD WSL

Or you can get the latest from git:
$ git clone http://linux.dell.com/git/wsl.git


Help or feedback?

To get help or feedback, send a note to the mailing list 
linux-poweredge@dell.com

You can sign up for the mailing list at 
https://lists.us.dell.com/mailman/listinfo/linux-poweredge.


Example Use Case?

WSMAN Identify

$ WSENDPOINT=192.168.7.31 WSUSER=admin WSPASS=*** wsl identify check

Create Encrypted Credential File
You will be prompted for name and password but you can also provide them as parameter to wsl.

$ wsl xcred admin.cred

Using Encrypted Credential File

$ WSENDPOINT=192.168.7.31 WSUSER=FILE:admin.cred wsl identify check

WSMAN Enumerate
Target IP address and user credential may be provided through shell environment or entered once and remembered through a history file so you don't have to provide them each subsequent use. See the customize section for more options.

$ wsl enum CIM_ComputerSystem

WSMAN Enumerate – Optimized
The default mode for an enumeration is a pull transaction. The first response gives you an Enumeration context which is used to send a Pull operation. The subsequent response gives you one instance of the class enumerated. It includes the Enumeration context which indicates a need for more pull until all instances have been sent to you. The last instance will not contain the Enumeration context. If you like to get one response that contains all instances, you need to instruct the server with an Optimization command and the maximum instances to return. If the maximum number you provided is less than the instance count, it will require Pull.

$ WSENUMOPTIMIZE=1 WSENUMMAXELEM=512 wsl enum CIM_ComputerSystem

WSMAN Enumerate – Default Schema
A default schema may be defined in the configuration file. If the prefix is not “CIM_”, the default schema is prepended to the class name. If the target schema is not the same as the default, you may specify the absolute class URI.

$ wsl enum DCIM_ComputerSystem

$ wsl enum http://schemas.sblim.org/wbem/wscim/1/cim-schema/2/Linux_ComputerSystem

WSMAN Enumerate – CQL Filter

$ wsl enum CIM_ComputerSystem -filter "select * from CIM_ComputerSystem where Name='systemmc'"

WSMAN Enumerate – EPR (Endpoint Reference)

$ wsl enum CIM_ComputerSystem -mode epr

WSMAN Get

$ wsl get DCIM_SPComputerSystem CreationClassName=DCIM_SPComputerSystem Name=systemmc

WSMAN Put/Set

$ wsl put DCIM_ActiveDirectoryService DomainControllerAddresses=XX –filter "select * from DCIM_ActiveDirectoryService where Name='systemmc'"

WSMAN Put/Set – Array

$ wsl put DCIM_ActiveDirectoryService DomainControllerAddresses=XX DomainControllerAddresses=YY

WSMAN Invoke

$ wsl invoke CIM_Log ClearLog -filter "select * from CIM_Log where InstanceID='DCIM:LifeCycleLog'"

WSMAN Enumerate – References
Enumeration of class association instance (or References) is a 2 step process. First is to acquire the EPR of the class instance you are interested in. Second is to use that EPR to enumerate its references.

$ wsl enum CIM_ComputerSystem -mode epr -filter "select * from CIM_ComputerSystem where Name='systemmc'"

$ wsl enum -references DCIM_SPComputerSystem CreationClassName=DCIM_SPComputerSystem Name=systemmc

WSMAN Enumerate – Associators
Enumeration of class associated instances (or Associators) is a 2 step process. First is to acquire the EPR of the class instance you are interested in. Second is to use that EPR to enumerate its associators.

$ wsl enum CIM_ComputerSystem -mode epr -filter "select * from CIM_ComputerSystem where Name='systemmc'"

$ wsl enum -associators DCIM_SPComputerSystem CreationClassName=DCIM_SPComputerSystem Name=systemmc


Can I customize?

You can customize run-time experience by defining variables in the shell environment or in a "wsl-config" file located in the current or program directory.

Connection variables:

  • WGETTIMEOUTSECS - transport timeout in seconds waiting for response. { 1...600} Default is 60.
  • WGETTRYNUM - transport number of retry when there is no response. { 1...6 } Default is 1.
  • WSNOSSL - Use HTTP connection. Default is use HTTPS.

Wsman options:

  • WSENUMMAXELEM - Max number of instances in a response. { 1...1048576 } Default is 512.
  • WSENUMOPTIMIZE - Optimized enumeration. Default is non-optimized.
  • WSDEFAULTSCHEMA - Schema prefix used for non-DMTF class. Default is "schemas.dell.com"

User input:

  • IPINTERACTIVE - Always ask for IP address. Default is use history.
  • KEEPHISTORY - Remember IP address and user credential. Default is keep history.

Output behavior:

  • DATETIMESTAMP - Display date-time stamp. Default is disabled.
  • FORMATDISPLAY - Formatted display of response XML. Default is disabled.
  • OUTLEVEL - Output level: 0=NoOutput, 1=AddResponse, 2=AddRequest, 3=AddMore. Default is 1.
  • OUTPREFIX - Output directory. Default is current directory.
  • LOGFILE - Log filename. Default is $OUTPREFIX/log.txt
  • RETURNFILE - Result XML filename. Default=$OUTPREFIX/response.xml


Big Smile  Have fun!