Rundeck::使用多个值执行远程命令

Rundeck::使用多个值执行远程命令,rundeck,Rundeck,Rundeck如何执行具有多个值的远程命令 允许的值:folder1、folder2、folder3 多值:[x]是 需要在远程节点上执行远程命令: /home/$folder1/run.sh /home/$folder2/run.sh /home/$folder3/run.sh 内联脚本还是其他什么?是的,在这种情况下,内联脚本可能是最简单的 下面是一个作业定义,它显示了如何解析bash脚本中的多个值: -描述:'使用多个值执行带有选项的脚本' executionEnabled:true 日

Rundeck如何执行具有多个值的远程命令

允许的值:folder1、folder2、folder3

多值:[x]是

需要在远程节点上执行远程命令:

/home/$folder1/run.sh

/home/$folder2/run.sh

/home/$folder3/run.sh


内联脚本还是其他什么?

是的,在这种情况下,内联脚本可能是最简单的

下面是一个作业定义,它显示了如何解析bash脚本中的多个值:


-描述:'使用多个值执行带有选项的脚本'
executionEnabled:true
日志级别:信息
姓名:SO-48341496
nodeFilterEditable:false
选项:
-分隔符:','
是的
多值:真
名称:文件夹
必填项:true
价值观:
-折叠1
-折叠2
-折页3
scheduleEnabled:false
顺序:
命令:
-参数:${option.folders}
脚本:|-
#!/usr/bin/env bash

如果s=',read-ra FOLDERS我也想在这里分享我的答案

每当您在Rundeck上使用多值选项时,您都可以选择在多个值之间提供分隔符。无论您选择何种分隔符,值都将转换为以下形式:

<value1><delimiter><value2><delimiter><value3><delimiter>...
在上面的例子中,我使用了;作为一个定界字符,它几乎不可能出现在任何人进入Rundeck的参数中。perl脚本将参数字符串拆分为多个参数,并将其提供给bash脚本,如下所示:

'<value1>' '<value2>' '<value3>' ...
“”“”“”。。。

在system()调用中,将这些作为单独的参数提供可能是更好的主意。当然,还有更复杂的方法可以做到这一点。这只是一个例子。

请发布跟踪代码并完成巡演;-)
'<value1> <value2> <value3> ...'
#!/usr/bin/perl
use strict;
use warnings;
use 5.16.3;

my $rundeck_input = $ARGV[0];
my @arguments = split(';',$rundeck_input);
my $final_str="";
my $i = 0;
foreach my $ele ( @arguments ) {
  $final_str = $final_str . '\'' . $ele . '\'';
  if ($i == ($#arguments)) {
  }
  else {
      $final_str = $final_str . " ";
    }
  $i++;
}
system("/usr/bin/bash /home/rundeck/scripts/myscript.sh $final_str");
'<value1>' '<value2>' '<value3>' ...