在命令行上传递密码到curl

时间:2017-10-03 08:15:07

标签: shell curl scripting

我有一个要求,我正在尝试编写一个在内部调用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

但这不起作用。我知道这个问题有变化,但我没有得到确切答案,因此发布了这个问题。

2 个答案:

答案 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或历史记录中可见。