cURL可以使用DIGEST auth存储的auth详细信息吗?

时间:2014-05-10 03:52:03

标签: php authentication curl cron

我在服务器上有一些PHP脚本,这些脚本具有DIGEST auth设置以提供基本保护。这些脚本由每个系统上的cron执行,如下所示:

/usr/bin/curl -s --digest -u "user:password" "http://path/to/script

在我目前的设置中,如果我碰巧更改了用户名/密码组合,我将不得不手动编辑所有crons来更新密码。

有没有办法可以在我可以传递给cURL的文本文件中存储auth详细信息(密码' s hash)?像...这样的东西。

/usr/bin/curl -<some option> /var/auth.txt

1 个答案:

答案 0 :(得分:1)

使用-d @filename是在POST调用中包含文件的方法,但我怀疑它不适用于-u

最好的选择是使用.curlrc,独立的curl配置文件,或通过stdin传递配置文件。

编辑:简短版本:向cURL请求添加-K <config file path>参数,并将-u "user:password"移至此文件的第一行。


来自curl http://curl.haxx.se/docs/manpage.html

的手册页
-K, --config <config file>

指定从哪个配置文件读取curl参数。配置文件是一个文本文件,其中可以编写命令行参数,然后将其用作在实际命令行上编写的文件。

必须在同一配置文件行上指定选项及其参数,用空格,冒号或等号分隔。可以选择在配置文件中给出长选项名称而不使用初始的双短划线,如果是这样,冒号或等号字符可以用作分隔符。如果使用一个或两个破折号指定选项,则选项及其参数之间不能有冒号或等号。

如果参数包含空格,则参数必须用引号括起来。在双引号内,可以使用以下转义序列:\,\“,\ t,\ n,\ r和\ v。忽略任何其他字母前面的反斜杠。如果配置行的第一列是'#'字符,该行的其余部分将被视为注释。只在配置文件中为每个物理行写一个选项。

将文件名指定为-K, - config指定为“ - ”以使curl从stdin读取文件。

请注意,为了能够在配置文件中指定URL,您需要使用--url选项指定它,而不是简单地在自己的行上编写URL。所以,它可能看起来像这样:

url =“http://curl.haxx.se/docs/

当调用curl时,它总是(除非使用-q)检查默认配置文件并在找到时使用它。将按以下顺序在以下位置检查默认配置文件:

1)curl尝试找到“home dir”:它首先检查CURL_HOME,然后检查HOME环境变量。如果做不到这一点,它会在类UNIX系统上使用getpwuid()(在给定系统中当前用户的情况下返回主目录)。在Windows上,它然后检查APPDATA变量,或作为最后的手段'%USERPROFILE%\ Application Data'。

2)在Windows上,如果主目录中没有_curlrc文件,它会在同一目录中检查curl可执行文件的位置。在类UNIX系统上,它只会尝试从确定的主目录加载.curlrc。

# --- Example file ---
#this  is a comment
 url = "curl.haxx.se"
 output = "curlhere.html"
 user-agent = "superagent/1.0"

# and fetch another URL too
 url = "curl.haxx.se/docs/manpage.html"
 -O
 referer = "http://nowhereatall.com/"
#- -- End of example file ---

此选项可多次使用以加载多个配置文件。