我正在编写一个Bash脚本,以使用zip -e
加密许多文件,现在我必须使用zip -P "plaintextpassword"
使其起作用。 我想让我的脚本安全地提示一次输入密码,然后对一个文件使用相同的密码。我的脚本看起来像
for f in *; do zip -v -P "plaintextpassword" "$f.zip" "$f"
这导致大量单独的.zip文件,这正是我想要的。
答案 0 :(得分:1)
您可以读取密码并将其存储为variable
并传递到bash shell中的for
循环
#!/bin/bash
# Read Password
echo -n Password:
read -s password
for f in *;
do
zip -v -P "$password" "$f.zip" "$f"
done
答案 1 :(得分:1)
在bash中,您将使用以下方式读取密码:
IFS= read -sr -p "Enter a password: " password
echo
IFS=
前缀可防止read
修剪空格和制表符,-r
使其不会尝试将反斜杠解析为转义符,-p "Enter a password: "
提供提示符{{1 }}使其在输入时不回显,然后在末尾的-s
转到下一行(通常通过在输入末尾回显回车符来处理……但是echo
会抑制它)
然后使用如下密码:
-s
请注意,这还不是很安全,因为传递给命令的参数(包括for f in *; do zip -v -P "$password" "$f.zip" "$f"
的密码参数)基本上是公共信息,可以通过zip
命令轻松查看。
答案 2 :(得分:0)
虽然不是一个真正的答案,但引用手册页总是很高兴:
-P password
--password password
使用密码加密zipfile条目(如果有)。这是不安全的!许多多用户操作系统为任何用户提供了查看任何其他用户的当前命令行的方法。即使在独立系统上, 总是会出现过肩偷看的威胁。在自动脚本中将纯文本密码存储为命令行的一部分甚至更糟。尽可能使用非回声的交互式提示输入通行证- 话。 (在真正意义上的安全性方面,请使用诸如“良好隐私”之类的强加密,而不要使用zipfile实用程序提供的相对较弱的标准加密。)来源:
man zip