另一个命令中的bash管道变量

时间:2016-05-10 16:30:24

标签: bash openssl

我想执行open-ssl以使用wordlist多次加密文件。每次我使用时:

  openssl enc -e -rc4 -in plain -out cipher
  enter rc4 encryption password:

我想做的是

  echo "differentpasswordeverytime" | openssl enc -e -rc4 -in plain -out cipher

我已经完成了while循环,但我找不到将其解析为openssl的方法。这应该通过openssl的STDIN?

我发现了另外两篇关于stdin和解析输入的帖子,但这些都没有用。

干杯

2 个答案:

答案 0 :(得分:3)

引自man openssl(接近结尾):

  

通过相关论点

     

多个命令接受密码参数,通常分别使用-passin-passout作为输入和输出密码。这些允许从各种来源获得密码。这两个选项都采用单个参数,其格式如下所述。如果没有给出密码参数并且需要密码,则提示用户输入一个密码:通常会从当前终端读取此信息并关闭回显。

接下来是获取密码的可能方式列表。我认为你想要的是stdin,尽管使用环境变量的选项可能会更好。 (你需要export变量来实现它。)

我建议您仔细阅读说明,并考虑到安全隐患。您还应该阅读您正在使用的子命令的联机帮助页(enc),或者如果您指定了一个它不理解的选项,请至少阅读所提供的摘要。

(在enc中,指定的实际选项既不是-passin也不是-passout,而是-pass。)

答案 1 :(得分:0)

如果要将变量通过管道传输到命令中,则应使用 echo 但要小心,因为实现可能会有所不同,并且多行变量有时会折叠为一行。 对我来说 bash echo "$variable" | command 工作,并保留多行字符串。

如果您希望将内部 /n 和其他转义字符计算为换行符,您应该像这样传递 -e 标志:

echo -e "$variable" | command