使用 curl 调用 API 不起作用:curl http://server/api?k1=v1&k2=v2
Calling an API with curl does not work: curl http://server/api?k1=v1&k2=v2
我想从 BASH 脚本中调用 API。
当我可以为前两个链接调用 API 时,它可以工作,但对于最后两个链接我没有得到相同的结果(它们在浏览器中工作)
echo "Kuma null"
curl --silent https://status.lol.net/api/push/UGUH?msg=OK > /dev/null
sleep 5
echo "Kuma not null"
curl --silent https://status.lol.net/api/push/UGUH?msg=OK
sleep 5
echo "Pi-hole null"
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54 > /dev/null
sleep 5
echo "Pi-hole not null"
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54
sleep 5
输出:
Kuma null
Kuma not null
{"ok":true}Pi-hole null
[]Pi-hole not null
[]
我需要更改什么?
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54
您需要像这样引用 URL:
curl --silent "http://192.168.0.22:5555/admin/api.php?disable=600&auth=54"
否则会被解释为
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600 & auth=54
# ^^^^^^^^^^
我想从 BASH 脚本中调用 API。 当我可以为前两个链接调用 API 时,它可以工作,但对于最后两个链接我没有得到相同的结果(它们在浏览器中工作)
echo "Kuma null"
curl --silent https://status.lol.net/api/push/UGUH?msg=OK > /dev/null
sleep 5
echo "Kuma not null"
curl --silent https://status.lol.net/api/push/UGUH?msg=OK
sleep 5
echo "Pi-hole null"
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54 > /dev/null
sleep 5
echo "Pi-hole not null"
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54
sleep 5
输出:
Kuma null
Kuma not null
{"ok":true}Pi-hole null
[]Pi-hole not null
[]
我需要更改什么?
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600&auth=54
您需要像这样引用 URL:
curl --silent "http://192.168.0.22:5555/admin/api.php?disable=600&auth=54"
否则会被解释为
curl --silent http://192.168.0.22:5555/admin/api.php?disable=600 & auth=54
# ^^^^^^^^^^