我们尝试通过几个curl命令检查API连接和响应,如下所示,但我们有两个问题。
-- function
function exec_cmd() {
cmd=$@
echo "curl command:" ${cmd}
response=$(${cmd} --max-time ${timeout_sec} -o ${LogFile} -w '%{http_code}\n' -S)
echo statud_code:${response}
}
-- curl command#1 ...
exec_cmd curl -v -x put <LBFrontIP/ApiEndpoint1> -H 'Content-Type:application/json; charset=utf-8' -H 'Host:<HostName>' -d '{"SystemId":"XXXX", "AppNo":"99999999999"}'
-- curl command#2
exec_cmd curl -v -x put <LBFrontIP/ApiEndpoint2> -H 'Content-Type:application/json; charset=utf-8' -H 'Host:<HostName>' -d '{"sbSystemId":"XXXX", "email":"XXX@example.com",
"PhoneNo":"99999999999"}'
-- curl command#3
exec_cmd curl -v -x put <LBFrontIP/ApiEndpoint3> -H 'Content-Type:application/json; charset=utf-8' -H 'Host:<HostName>' -d '
{
"ID1": "XXXXX",
"ID2": "1q2w3e4r5t",
"applyNo": "00db182faef74e779ca958681127bcec", ...
"docLiveScore": "0.1391"
}'
问题1:cmd=$@可以获取curl命令,但如果curl命令包含@或返回代码,则无法按预期方式工作。curl命令#1工作正常,但curl命令#2和#3工作不正常,因为bash将数据选项中的@和返回代码误解为命令行的终止。不过Curl命令可以自己工作。还尝试了cmd=$* 或cmd="$@”但到目前为止还不起作用。
问题#2:我们想得到status_code来进行快速检查,但同时,我们想得到日志中的详细响应。有没有更好的方法通过适当的函数同时得到status_code和详细日志?
以上命令覆盖详细日志...
1条答案
按热度按时间p4tfgftt1#
考虑到所涉及的命令的复杂性,我很想说您应该避免命令解析,而从作业配置文件中读取命令行。