基于模板的Shell脚本生成命令

Shell script generation command based on template

本文关键字:命令 脚本 Shell 于模板      更新时间:2023-10-16

我想要实现的目标

  • 用户将提供一个进行远程执行的命令。命令(用于远程执行的协议)可以是SSH/RSH。。。等等。所以我希望它是配置文件或模板文件的一部分(假设参数在协议中是固定的),如下面的示例-

template.cfg文件(由用户配置):

ssh $ip $commandList  
  • 我会在另一个数据文件中生成一个值列表,其中包含ip地址和命令列表。像

    10.182.215.214|echo $UNAME
    10.251.142.142|echo $SHELLNAME
    
  • 我想要一个名为driver.sh的脚本,当它被执行时,会用从模板到另一个执行脚本execute.sh 的命令生成实际的脚本

问题

  1. 我如何基于template/plugin生成脚本(它可以自由地提供命令)
  2. 如果数据是在在线应用程序(C/C++)中生成的,除了基于正常文件的操作(从cfg文件读取并更新execute.sh)之外,还有更好的方法吗

1。

while IFS=| read ip commandList
do  eval echo $(<template.cfg)
done <data >execute.sh

您可能需要引用data文件中的变量展开式。

2。由于您希望用户提供的命令成为配置文件的一部分,我看不到其他方法,只能从cfg文件中读取;另一方面,您可以直接执行生成的命令,而不是将它们写入execute.sh

这看起来就像是在尝试重新实现像puppetchef这样的自动化配置工具。击败ssh循环。

Puppet包含一个名为facter的模块,用于报告/收集有关远程系统的各种数据。

所有这些工具都需要一些设置(公用/专用键盘、软件安装)。它们都具有内置日志记录的优势,有利于审计。