【发布时间】:2017-07-03 13:03:06
【问题描述】:
我正在尝试使用 Perl 中的 crypt 哈希函数对密码进行哈希处理。到目前为止,在一个 Bash 脚本中,我有:
password='Pa$$word'
hashedPassword="$(perl -e "print crypt('$password', 'salt'), \"\n"")"
然后我使用 sed 修改/复制 /etc/shadow:
sed -e '/^user1:/s_:[^:]*:_:'"$hashedPassword"':_' /etc/shadow > /tmp/shadow
该方法有效,除非传递包含单引号的字符串。如何处理包含 ' 单引号的密码?运行 Solaris 10 操作系统。
【问题讨论】:
-
你怎么打电话给
sed?单引号在此命令中不应该是特殊的。例如:hashedPassword="start'end" && echo '/^user1:/s_:[^:]*:_:'"$hashedPassword"':_'打印出/^user1:/s_:[^:]*:_:start'end:_,看起来不错。