首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >屏蔽用户输入和编码

屏蔽用户输入和编码
EN

Stack Overflow用户
提问于 2012-09-20 18:14:31
回答 2查看 139关注 0票数 0

我希望创建一个简单的bash别名,因为这组特定的函数需要大量的选项和开关。这是背景信息,不是问题所在。

要执行有问题的命令,需要一个密码短语(通常位于多个位置),我希望将其最小化,同时为其他用户提供一些隐私。

下面是别名的例子...

代码语言:javascript
复制
alias test="read -sp 'Enter passphrase: ' pass; gpg --batch --passphrase $pass --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext"

别名工作正常,提示用户输入密码短语并将其应用于解密过程。

这就是问题所在:如果我加密文件并输入密码短语(不使用上面示例中所示的read -sp实用程序),加密文件的密码与使用'read‘二进制文件屏蔽输入的密码不同。

如果我显示使用read -sp捕获的$pass的内容,它显示的内容与我输入的内容一样,没有任何附加的行尾等。

有没有人经历过这个?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 18:19:11

你不应该引用$pass的话吗?如果它包含空格等,您还需要对$进行转义,使其在设置别名时不会扩展。

所以:

代码语言:javascript
复制
alias test="read -sp 'Enter pp: ' pass; gpg --passphrase \"\$pass\" --batch --symmetric --cipher-algo aes256 -o file.ext.gpg file.ext"

除此之外,您可能希望使用--passphrase-fd,这样密码短语就不会出现在ps输出中:

代码语言:javascript
复制
alias test="read -sp 'pp: ' pass; gpg --passphrase-fd 3 --etc-etc 3<<< \$pass"
票数 3
EN

Stack Overflow用户

发布于 2012-09-20 20:42:19

shell函数将更简单,因为您消除了引号级别,并且如果需要将该函数泛化到其他文件中,则允许使用参数。

代码语言:javascript
复制
# There is already a standard command called 'test'; use a different name
pass_encrypt () {
  in=$1
  out=$in.gpg
  read -rsp 'Enter passphrase: ' pass
  gpg --batch --passphrase-fd 3 --symmetric \
      --cipher-algo aes256 -o "$out" "$in" 3<<<$pass
}

(mvds建议使用--passphrase-fd)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12510506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档