| 1 | #
|
|---|
| 2 | # This is a script example, which shows how to run a shell command on a set of nodes
|
|---|
| 3 | #
|
|---|
| 4 | # The scenario of this experiment involves one set of nodes: 'mygroup'. We will execute
|
|---|
| 5 | # the shell command 'ls -la' on all the nodes within that set. The output of this command
|
|---|
| 6 | # will be sent back to (and displayed on) the console where this script is running.
|
|---|
| 7 | #
|
|---|
| 8 | # In this example we:
|
|---|
| 9 | # 1) Define a set of nodes which contains 2 nodes: [1,1] and [1,2]
|
|---|
| 10 | # 2) Execute the 'ls -la' shell command on these nodes
|
|---|
| 11 |
|
|---|
| 12 | # 1)
|
|---|
| 13 | # Define a set of nodes which contains 2 nodes: [1,1] and [1,2]
|
|---|
| 14 | defGroup('mygroup',[[1,1],[1,2]])
|
|---|
| 15 |
|
|---|
| 16 | # 2)
|
|---|
| 17 | # When all the nodes are 'UP', execute the 'ls -la' shell command on them
|
|---|
| 18 | whenAllUp() {
|
|---|
| 19 |
|
|---|
| 20 | # Print some info
|
|---|
| 21 | puts "Execute commands /bin/ls on all nodes"
|
|---|
| 22 |
|
|---|
| 23 | # Use the 'exec' command on 'allNodes' to execute the shell command 'ls -la'
|
|---|
| 24 | # By default the output of the shell command will be sent back to and printed
|
|---|
| 25 | # on this console
|
|---|
| 26 | allGroups.exec("/bin/ls -la")
|
|---|
| 27 |
|
|---|
| 28 | wait 2 # wait 2 sec
|
|---|
| 29 | Experiment.done
|
|---|
| 30 |
|
|---|
| 31 | # OPTIONAL:
|
|---|
| 32 | # You can overwrite the default output processing of the command by defining a
|
|---|
| 33 | # block when calling 'exec'
|
|---|
| 34 | #
|
|---|
| 35 | # For example, below we define a block which will print the outputs using our
|
|---|
| 36 | # own formatting
|
|---|
| 37 | #
|
|---|
| 38 | # allGroups.exec("/bin/ls -la") { |node, operation, eventName, message|
|
|---|
| 39 | # puts " - We received an output from: #{node.name}"
|
|---|
| 40 | # puts " - This output is: #{message}"
|
|---|
| 41 | # }
|
|---|
| 42 | #
|
|---|
| 43 | # In this other example below, we redirect the received outputs to a text file
|
|---|
| 44 | #
|
|---|
| 45 | # allGroups.exec("/bin/ls -la") { |node, operation, eventName, message|
|
|---|
| 46 | # myFile = File.open("output.txt", "a+") do |f|
|
|---|
| 47 | # f.puts " - We received an output from: #{node.name}"
|
|---|
| 48 | # f.puts " - This output is: #{message}"
|
|---|
| 49 | # end
|
|---|
| 50 | # }
|
|---|
| 51 | }
|
|---|