这个 cURL 错误是什么意思?在哪里可以找到更多相关信息?
curl: (56) SSL read: error:00000000:lib(0):func(0):reason(0), errno 73
我正在编写一个 shell 脚本来查询 Splunk API。在某些情况下,5 分钟后,我会收到此错误。有时我可以重新运行脚本,错误就会消失,我就会得到我想要的输出。
这是我在终端上看到的内容。
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:05:01 --:--:-- 0
curl: (56) SSL read: error:00000000:lib(0):func(0):reason(0), errno 73
示例搜索如下。我将用“spock”代替主机名。此搜索在其他主机上确实成功,因此此特定搜索并非不正确并导致问题。
search index=os_nix host=spock source=/var/adm/messages latest=-30d NOT snmpd authentication (error OR fail OR failure) | head
我正在像这样构建我的命令。
URLPROTO='https://'
URLHOST='splunkapi.example.com'
URLPORT=':8089'
URLDIR='/servicesNS/admin/search/search/jobs/export'
URL="${URLPROTO}${URLHOST}${URLPORT}${URLDIR}"
luser=(read from user input)
lpassword=(read from user input)
OUTFILE=(generated from hostname and the type of search I'm running)
mySEARCH=(read from input file)
USER=(User ID read from environment)
实际的命令是这样的。
curl -k -o "${OUTFILE}" -u ${luser:=${USER}}:${lpasswd} ${URL} -d search="${mySEARCH}" -d output_mode="csv"
我的脚本循环遍历主机列表,从外部文件读取,对每个主机执行多次搜索,从不同的外部文件读取。为了进一步说明,我可以运行我的脚本,在总共三十次搜索中,我会得到两到三次失败。整个运行不会失败,只有两三个单独的主机/搜索对会失败。失败不仅限于特定的主机/搜索对或特定的主机或特定的搜索,因为我可以重新运行我的脚本,而且失败很有可能成功。
cURL 错误试图告诉我什么?
如果这很重要的话,这就是 AIX。
curl 7.11.1 (powerpc-ibm-aix5.2.0.0) libcurl/7.11.1 OpenSSL/0.9.7g ipv6
Protocols: ftp gopher telnet dict ldap http file https ftps
Features: IPv6 SSL NTLM Largefile
答案1
与“错误编号”相关的名称应位于通常存放在某处的errno
文件中,但通过网络搜索会出现以下结果:errno.h
/usr/include
http://www.ioplex.com/~miallen/errcmp.html
对于 73 和 AIX 来说,这是“对等方重置连接”。因此,由于某种原因,对等方(或客户端和对等方之间的某物)重置了连接。
答案2
Curl 报告这些错误是因为 Splunk 没有返回任何数据。(我的搜索返回了大多数主机的数据,但特定时间窗口会导致它偶尔失败。)
Splunk 在 5 分钟后超时并断开 curl,错误号 73。curl 退出代码 (56) 为“接收网络数据失败”。Splunk 不发送任何内容,因此没有数据可接收。
感谢@thrig 和@OscarAkaElvis 的协助。