Shell脚本无法读取加密密码登录Tableau Server问题求助
你遇到的报错是三个常见的Shell脚本编写失误导致的,修复方案如下:
问题根源
- 脚本首行的Shebang声明错误,你写的是
#bin/bash,缺少根路径斜杠,正确应为#!/bin/bash,会导致Shell解析器识别异常。 - openssl解密输出的明文末尾默认携带换行符,存入
PASSWD变量后,传给tabcmd时会被识别为额外的非法参数。 - 调用
tabcmd时变量没有加双引号包裹,若密码包含特殊字符、空格,会被Shell拆分为多个参数,触发参数数量错误。
修复后的完整脚本
#!/bin/bash USERNAME=test # 用tr -d '\n'删除解密结果末尾的换行符,同时用$()替代反引号提升可读性 PASSWD=$(cat secret.txt | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 \ -iter 100000 -salt -pass pass:Secret@123# | tr -d '\n') # 变量用双引号包裹避免分词 tabcmd login -u "$USERNAME" -p "$PASSWD"
调试验证方法
如果修改后仍然报错,可以在调用tabcmd前增加一行代码echo "密码长度为: ${#PASSWD}",确认输出的长度和你明文密码长度一致,即可验证换行符是否已经被完全清理。
内容的提问来源于stack exchange,提问作者Djabone
相关产品推荐
相关产品推荐

