这是我的脚本,保存为 f5cli 和 chmod +x f5cli 可执行文件。我使用 F5FPC_HOST 环境变量来选择主机 url 的值
#!/bin/sh
user=$(echo "" | dmenu -p "Enter user:")
secret="'$(echo "" | dmenu -P -p "Enter secret(PIN, OTP, Password):")'"
f5fpc --start -u $user -p $secret -t $F5FPC_HOST
变量值的替换不是问题,我已经通过在 echo/notify-send 中打印数据来验证。我尝试将 bin/sh 更改为 bin/zsh 或 bin/bash。
在终端中运行的命令
f5fpc --start -u user -p 'XXXX123456PASSWORD' -t https://abc.com
答案1
你可以这样做:
user="$(printf "" | dmenu -p "Enter user:")"
pass="$(printf "" | dmenu -P -p "Enter secret(PIN, OTP, Password):")"
f5fpc --start -u "$user" -p "$pass" -t "$F5FPC_HOST"
用于printf ""
防止 dmenu 将 stdin 作为列表读取。echo
将附加一个换行符,并将dmenu
其视为空列表条目。
除此之外,您应该检查是否f5fpc
覆盖 argv 中的密码 - 以便它不会通过使用例如ps
.
f5fpc
如果是这种情况,最好在 shell 中打开该脚本并输入密码。
答案2
得到修复。谢谢穆鲁指出报价问题。
#!/bin/sh
user=$(echo "" | dmenu -p "Enter user:")
secret="$(echo "" | dmenu -p "Enter secret(PIN, OTP, Password):")"
cmd="f5fpc --start -u $user -p '$secret' -t $F5FPC_HOST"
eval "$cmd"