为 bash 脚本提供密码

为 bash 脚本提供密码

我有一个 bash 脚本,可以加密不同的文件。
该脚本提示我输入每个文件的密码(以加密)。

有没有办法将脚本所需的信息作为脚本的参数提供,这样我就不必每次为每个文件手动输入它们?

我试过:

  • cat "input" | ./Script.sh
  • cat "input.txt" | ./Script.sh
  • echo "input" | ./Script.sh
  • printf 'word1\nword2\nword3\n' | ./script

编辑:用 Volker Siegel 的答案解决了这个问题:

  1. 安装期望:sudo apt-get install expect
  2. 运行自动预期:autoexpect -f file-to-save-automation script-to-automate
  3. 运行生成的文件:./file-to-save-automation

答案1

你需要这个程序expect。你需要做的就是它的主要用途。
您用于autoexpect生成使用程序的记录。

录制的是(tcl)中的一个脚本,可以运行你的脚本,包括输入密码。

如果不能完美运行,您可以编辑生成的脚本。该语言不再广泛使用,但非常简单。查看代码示例以了解您需要的内容。

您应该可以轻松找到适合您的案例的使用示例。

答案2

是的,参数可以通过脚本中的位置变量来引用。

EG-

#!/bin/bash

if [ $# -ge 1 ]
then
  echo First argument is $1
fi

./my_script argument1...调用它

所以你必须$1使用$9,如果你需要超过 9 个,你可以使用shift,好吧.. 转移它们。

综上所述,在命令行上接受密码通常是不好的,因为它可以在用户的​​历史记录以及 、 等的输出中看到。ps如果top是我,我会提示用户输入密码作为脚本的一部分。

相关内容