gpt4 book ai didi

linux - 传递带有特殊字符的变量作为密码会破坏 bash 脚本。如何清理 bash 中的特殊字符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:49 28 4
gpt4 key购买 nike

我正在寻找一种解决方案来清理我的 bash 密码更改脚本中的变量。

下面的脚本可以运行,但是我发现一些“特殊字符”会破坏我的脚本。我目前无法控制正在传递的字符。我要么希望在传递变量之前对其进行清理,要么将变量作为一个整体保持不变。我曾尝试使用“${PASS}”代替“${PASS}”,但在这种情况下脚本无法完成。

如果有人能提供任何建议,我将不胜感激。我在发布之前尝试寻找这个问题的答案,但没有找到任何相关的东西,所以如果这个问题在其他地方得到了回答,我很抱歉。

#!/bin/bash

# Two variables are passed, Username and new Password.

USERNAME=$1
PASS=$2

expect << EOF
spawn passwd ${USERNAME}
expect "Enter new UNIX password:"
send "${PASS}\r"
expect "Retype new UNIX password:"
send "${PASS}\r"
expect eof;
EOF

expect << EOF
spawn htdigest /.passwd "Authenticated Users" ${USERNAME}
expect "New password:"
send "${PASS}\r"
expect "Re-type new password:"
send "${PASS}\r"
expect eof;
EOF

expect << EOF
spawn htpasswd /squiddb ${USERNAME}
expect "New password:"
send "${PASS}\r"
expect "Re-type new password:"
send "${PASS}\r"
expect eof;
EOF

提前致谢!

最佳答案

通过命令行参数将用户名和密码发送到 expect 脚本以代替 expect。正如现在所做的那样,双引号会使 expect 感到困惑,因为在发送到 expect 的标准输入之前,这里的文档已被完全插入。

像 'hej"' 这样没有单引号的密码会导致 expect 的发送命令看起来像这样:

发送“hej”\r“

expect 不会喜欢那个。

您可以通过 argv 访问参数,注意引用。如果您将用户名和密码作为参数传递到预期的命令行中,请不要认为您会将用户名和密码暴露给在该框上执行“ps”的任何人。但是您在调用问题中的脚本时已经这样做了...

关于linux - 传递带有特殊字符的变量作为密码会破坏 bash 脚本。如何清理 bash 中的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23881574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com