Monthly Archives: September 2014

Using the dcli Utility

7 Using the dcli Utility

The dcli utility executes commands across a group of servers on Oracle and returns the output.

This chapter contains the following sections:

1 Overview of the dcli Utility

The dcli utility executes commands on multiple Oracle Big Data Appliance servers in parallel, using the InfiniBand (bondib0) interface to make the connections. You can run the utility from any server.

1.1 Setting Up Passwordless SSH

The dcli utility requires a passwordless Secure Shell (SSH) between the local server and all target servers. You run the dcli utility on the local server, and the commands specified in dcli execute on the target servers.

Two scripts facilitate the use of SSH on Oracle Big Data Appliance: setup-root-ssh and remove-root-ssh. These scripts accept two options that are also used by dcli:

  • -C: Targets all the servers in a Hadoop cluster
  • -g: Targets a user-defined set of servers

To set up passwordless SSH for root:

  1. Connect to an Oracle Big Data Appliance server using PuTTY or a similar utility. Select an SSH connection type.
  2. Log in as root.
  3. Set up passwordless SSH for root across the rack:

    Or, to set up passwordless SSH across a Hadoop cluster of multiple racks:

    setup-root-ssh -C

    You see the message “ssh key added” from each server.

  4. You can now run any ssh command on any server in the rack without entering a password. In addition to dcli commands, you can use scp to copy files between servers.
  5. To remove passwordless SSH from root:

1.2 Basic Use of dcli

This topic identifies some of the basic options to the dcli command.

1.2.1 Getting Help

To see the dcli help page, issue the dcli command with the -h or --help options. You can see a description of the commands by issuing the dclicommand with no options.

1.2.2 Identifying the Target Servers

You can identify the servers where you want the commands to run either in the command line or in a file. For a list of default target servers, use the -toption. To change the target servers for the current command, use the -c or -g options described in below table.

The /opt/oracle/bda directory contains two files for executing commands on multiple servers:

  • rack-hosts-infiniband is the default target group of servers for the dclisetup-root-ssh, and remove-root-ssh utilities. The file initially contains the default factory IP addresses. The network configuration process changes this file to the custom IP addresses identified in the Oracle Big Data Appliance Configuration Worksheets.
  • cluster-hosts-infiniband contains the names of all servers in the Hadoop cluster created by the Mammoth Utility. A cluster can span one or more Oracle Big Data Appliance racks.

You can manually create additional files with groups of servers that you want to manage together. For example, you might manage servers 5 to 18 together, because they have no special functions like servers 1 to 4.

1.2.3 Specifying the Commands

You typically specify a command for execution on the target servers on the command line. However, you can also create a command file for a series of commands that you often issue together or for commands with complex syntax. See the -x option in below table.

You can also copy files to the target servers without executing them by using the -f option.

1.2.4 Controlling the Output Levels

You can request more information with the -v option or less information with the -n option. You can also limit the number of returned lines with the --maxlines option, or replace matching strings with the -r option.

Following are examples of various output levels using a simple example: the Linux date command.


The output from only one server (node07) is shown. The syntax in these examples issues the date command on all 18 servers.

This is the default output, which lists the server followed by the output.

# dcli date Tue Feb 14 10:22:31 PST 2012

The minimal output returns OK for completed execution:

# dcli -n date
OK: ['']

Verbose output provides extensive information about the settings under which the command ran:

dcli -v dateoptions.nodes: Noneoptions.destfile: Noneoptions.file: dcserversoptions.maxLines: 100000options.listNegatives: 
Falseoptions.pushKey: Falseoptions.regexp: Noneoptions.sshOptions: 
Noneoptions.scpOptions: Noneoptions.dropKey: Falseoptions.serializeOps:
 Falseoptions.userID: rootoptions.verbosity 1options.vmstatOps 
Noneoptions.execfile: Noneargv: ['/opt/oracle/bda/bin/dcli', 
'-g', 'dcservers', '-v', 'date']Success connecting to nodes: 
['']...entering thread for /usr/bin/ssh 
-l root ' date' ...exiting thread for status: 
Tue Feb 14 10:24:43 PST 2013]

2 dcli Syntax

dcli [options] [command]


The options described in below table. You can omit all options to run a command on all servers.

Any command that runs from the operating system prompt. If the command contains punctuation marks or special characters, then enclose the command in double quotation marks.

The backslash (\) is the escape character. Precede the following special characters with a backslash on the command line to prevent interpretation by the shell. The backslash is not needed in a command file. See the -x option for information about command files.
$ (dollar sign)
' (quotation mark)
< (less than)
> (greater than)
( ) (parentheses)

Table  dcli Options

Option Description
-c nodes Specifies a comma-separated list of Oracle Big Data Appliance

servers where the command is executed

-C Uses the list of servers in /opt/oracle/bda/cluster-rack-infiniband

as the target.

-d destfile Specifies a target directory or file name for the -f option
-f file Specifies files to be copied to the user’s home directory on the

target servers. The files are not executed. See the -l option.

-g groupfile Specifies a file containing a list of Oracle Big Data Appliance

servers where the command is executed. Either server names

or IP addresses can be used in the file.

-h--help Displays a description of the commands
-k Pushes the ssh key to each server’s /root/.ssh/authorized_keys file.
-l userid Identifies the user ID for logging in to another server.

The default ID is root.

--maxlines=maxlines Identifies the maximum lines of output displayed from a

command executed on multiple servers. The default is 10,000 lines.

-n Abbreviates the output for non-error messages. Only the

server name is displayed when a server returns normal

output (return code 0).You cannot use the

-n and -r options together.

-r regexp Replaces the output with the server name for lines

that match the specified regular expression

-s sshoptions Specifies a string of options that are passed to SSH
--scp=scpoptions Specifies a string of options that are passed to

Secure Copy (SCP), when these options are different from


--serial Serializes execution over the servers. The default is

parallel execution.

-t Lists the target servers
--unkey Drops the keys from the authorized_key files of the target


-v Displays the verbose version of all messages
--version Displays the dcli version number
--vmstat=VMSTATOPS Displays the syntax of the Linux Virtual Memory Statistics utility

(vmstat). This command returns process, virtual memory, disk,

trap, and CPU activity information.To issue a vmstat command,

enclose its options in quotation marks. For example:

--vmstat="-a 3 5"

See your Linux documentation for more information about vmstat.

-x execfile Specifies a command file to be copied to the user’s home directory

and executed on the target servers. See the -l option.

3 dcli Return Values

  • 0: The command ran successfully on all servers.
  • 1: One or more servers were inaccessible or remote execution returned a nonzero value. A message lists the unresponsive servers. Execution continues on the other servers.
  • 2: A local error prevented the command from executing.

If you interrupt the local dcli process, then the remote commands may continue without returning their output or status.

4 dcli Examples

Following are examples of the dcli utility.

This example returns the default list of target servers:

# dcli -t
Target nodes: ['', '', 
'', '', 
'', '', 
'', '', 

The next example checks the temperature of all servers:

# dcli 'ipmitool sunoem cli "show /SYS/T_AMB" | grep value' value = 22.000 degree C value = 22.000 degree C value = 22.000 degree C value = 23.000 degree C

Back to School: What Open UI Does for You – And What Not(GOOD BYE SIEBEL, AT LEAST FOR ME)re-blogged from siebel-essentials

With the upcoming Siebel Innovation Pack 2014, the Siebel community is rightfully excited about Siebel Open UI. IP 2014 will be the fourth release (after two years ago, and IP 2013) and once it is generally available, there will be a lot of exciting things to write about.

Siebel Open UI – now in 3D. Coming to a browser near you soon 😉

But here we are, still with IP 2013 and many customers contemplating if they should do ‘the switch’ from traditional Siebel web clients to the new Redeemer UI. In our ‘back to school’ series we also contemplate today and nurse some deep thoughts about what Open UI could do for us and what we should better not expect.

What Open UI does for you

There are many non-arguable points for Open UI such as:

Open UI gives you browser independency: Un-chain your project from IE8 and ActiveX lock-in. The prospect of accessing all your Siebel data in any browser on any device is a truly compelling argument.

It makes your applications rich: Well, if we don’t get rich with Siebel, our applications do with Open UI. Siebel Open UI is built on modern web standards like HTML5, JavaScript and CSS3. So if your browser can do it, you can do it.

Open UI provides an extensible browser-side framework: You no longer have to feel bad for writing browser script. Siebel Open UI provides a JavaScript API and multi-tier architecture that guarantees goosebumps 😉

Open UI can rejuvenate your project: Siebel Open UI has a rejuvenating effect on the Siebel family. Instead of desperately ‘hanging on’ you can now stay on the scene as a project lead or developer. End users (mostly) will love Open UI, if you manage their expectations right from day one (see below).

…and if I forgot anything, here’s Oracle’s official data sheet. And of course, your comments are welcome as always.

What Open UI does NOT do for you

Open UI does NOT teach you good manners: That you have to do yourself. What I have seen often is that when Open UI is introduced in a project, everyone gets so excited that all ‘good manners’ are thrown overboard. Business process analysis? Requirements mapping? Design? Source control? Forget it, we’ve got Open UI, so we do all the fancy stuff because we can do it. That of course is a recipe for disaster.

It does NOT make you a web developer overnight: With Open UI, the typical Siebel developer can be easily overwhelmed with all the web technologies such as JavaScript, HTML and CSS. Oh, you wrote eScript for the last ten years? Jolly good but sorry, that does not make you a web developer even if you argue that JavaScript is based on the same standard (ECMA) as eScript. Most of us will have to start learning, not only the Open UI API but also web standards. And it’s better to start learning today than tomorrow.

It does NOT grant you the ‘license to code’: While Open UI provides us with a three-tier browser-side architecture and a JavaScript API, you should still think twice before you code. Any line of code that you add to your project is likely to make your life harder during troubleshooting, debugging, maintenance, monitoring and upgrades. That does not change just because you now write code in a friggin cool JavaScript IDE.

Open UI will NOT pardon you for things you did in the past: If you hacked your way through browser scripting and ActiveX in the old world of High or Standard Interactivity, you’re gonna have a bad time in Open UI. But even if you obeyed the rules, expect some things to break (see next points).

It will NOT manage your expectations (nor your customer’s): You still have to be realistic. Open UI relies heavily on JavaScript, so choose your browser wisely and do not expect your heavily customized Open UI client to perform equally fast on every device and browser combination. Do not expect that you just ‘turn the key’ and your Siebel application that you customized over the past 10 years will ‘magically’ become a modern web application. Migrating all your customizations (especially browser script) to Open UI can be hard work. The more you stayed on the standard path and away from (browser) scripting, the faster your migration will be.

Siebel Open UI will NOT be 100% compliant with the old world: The HI and SI clients have had their time. Personally, I still consider the HI client (from 7.7 onwards) to be one of the best enterprise app UIs in existence (I have used plenty of other ‘enterprise apps’, believe me). But times are a’changin’ and we have to leave some dear acquaintances behind (right mouse click, anyone?). Oracle does a great job to migrate most of the HI goodies (iHelp is planned for IP 2014 for example) to Open UI but you will fare better if you do not expect a 100% transition.