我有一个要求,我正在尝试编写一个在内部调用curl命令的shell脚本。我将密码,用户名和URL存储为脚本中的变量。但是,由于我想避免在脚本中使用curl命令的user:password格式,我只是使用curl --user命令。我的意图是通过stdin传递密码。所以,我正在尝试这样的事情 -
#!/bin/bash
user="abcuser"
pass="trialrun"
url="https://xyz.abc.com"
curl --user $user $url 2>&1 <<EOF
$pass
EOF
但这不起作用。我知道这个问题有变化,但我没有得到确切答案,因此发布了这个问题。
答案 0 :(得分:2)
您可以使用:
curl -u abcuser:trialrun https://xyz.abc.comp
在你的剧本中:
curl -u ${user}:${pass} ${url}
从stdin读取:
curl https://xyz.abc.com -K- <<< "-u user:password"
使用-K, --config
时指定-
使curl从stdin读取文件
这应该适用于来自HTTP Basic Auth
的curl man:-u, --user <user:password>
Specify the user name and password to use for server authentication.
答案 1 :(得分:0)
要扩展@nbari的答案,如果您拥有可以在stdout上生成密码的工具“ get-password”,则可以安全地使用此调用:
user="abcuser"
url="https://xyz.abc.com"
get-password $user | sed -e "s/^/-u $user:/" | curl -K- $url
密码将被写入管道。我们使用sed
将密码修改为预期的格式。因此,密码将永远不会在ps
或历史记录中可见。