2012-07-27 32 views
0

我想实现shell脚本生成命令基于模板

  • 用户将提供一个命令,它会做远程执行什么。命令(用于远程执行的协议)可以是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. 如何根据模板/插件生成脚本(可以采用自由度并提供命令)?
  2. 如果数据是在在线应用程序(C/C++)中生成的,除了正常的基于文件的操作(从cfg文件读取并更新execute.sh)有没有更好的方法?

回答

1

1.

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

您可能希望引用变量扩展在data文件。

2. 由于您希望用户提供的命令是配置文件的一部分,因此除了从cfg文件中读取数据外,没有别的办法可以看到;另一方面,您可以直接执行生成的命令,而不是将它们写入到execute.sh

0

这看起来好像你试图重新实现自动配置工具,如puppetchef。击败ssh循环。

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

所有这些工具都需要一些设置(公钥/私钥对,软件安装)。 它们都具有内建日志记录的优点 - 适用于审计。