1)cat xxx.sh | sh可以执行从标准输入获取的脚本,但无法传递参数
2)用xxx.sh a b c可以执行带参数的脚本,但是是从文件读取脚本。
我现在需要从加密的数据中解密出一个脚本并执行。因为安全的原因,我不想将脚本保存成文件再执行,以避免留下痕迹。所以需要像1)那样直接执行脚本,但由于脚本有参数,又需要像2)那样可以传递参数给脚本,如何才能实现。
注:我参考了shc,发现shc好像没有考虑到这个问题。
我要实现的是shell加密,原理类似于shc。即先将shell脚本的内容加密成数据,然后写个程序解密出来并直接丢给/bin/sh运行。由于安全方面的原因,不希望将解密出来的脚本中间保存到文件系统。目前使用的方式是用dup2将标准输入重定向,然后将解密出来的shell脚本输出到标准输入,再调用/bin/sh来运行,相当于cat test.sh | sh。结果是可行的。但我那脚本需要传递参考,怎么传递参数就不会了。