usa tutorial sirve que para instalar index funciona elastic crear como comandos shell curl

shell - tutorial - para que sirve elastic search



Curl para devolver el código de estado http junto con la respuesta (8)

Encontré esta pregunta porque quería AMBAS la respuesta y el contenido para agregar un manejo de errores para el usuario.

Puede imprimir el código de estado HTTP para eliminar y escribir el contenido en otro archivo.

curl -i http://localhost

Esto le permite usar la lógica para decidir si vale la pena procesar la respuesta.

curl -v http://localhost

Utilizo curl para obtener encabezados http para encontrar el código de estado http y también devolver la respuesta. Obtengo los encabezados http con el comando

curl -I http://localhost

Para obtener la respuesta, uso el comando

curl http://localhost

Tan pronto como use el indicador -I, solo obtengo los encabezados y la respuesta ya no está allí. ¿Hay alguna manera de obtener la respuesta http y los encabezados / código de estado http en un solo comando?


Este comando

curl http://localhost -w ", %{http_code}"

obtendrá el cuerpo y el estado separados por comas; puedes dividirlos para sacarlos.

Puede cambiar el delimitador a su gusto.


He usado esto:

request_cmd="$(curl -i -o - --silent -X GET --header ''Accept: application/json'' --header ''Authorization: _your_auth_code=='' ''https://example.com'')"

Para obtener el estado HTTP

http_status=$(echo "$request_cmd" | grep HTTP | awk ''{print $2}'') echo $http_status

Para obtener el cuerpo de respuesta, he usado esto

output_response=$(echo "$request_cmd" | grep body) echo $output_response


La opción -i es la que desea:

curl -s -o response.txt -w "%{http_code}" http://example.com

-i, --include Incluir encabezados de protocolo en la salida (H / F)

Alternativamente, puede usar la opción detallada:

http_response=$(curl -s -o response.txt -w "%{http_code}" http://example.com) if [ $http_response != "200" ]; then # handle error else echo "Server returned:" cat response.txt fi

-v, --verbose Hacer que la operación sea más comunicativa


Para uso programático, uso lo siguiente:

curlwithcode() { code=0 # Run curl in a separate command, capturing output of -w "%{http_code}" into statuscode # and sending the content to a file with -o >(cat >/tmp/curl_body) statuscode=$(curl -w "%{http_code}" / -o >(cat >/tmp/curl_body) / "$@" ) || code="$?" body="$(cat /tmp/curl_body)" echo "statuscode : $statuscode" echo "exitcode : $code" echo "body : $body" } curlwithcode https://api.github.com/users/tj

Muestra el siguiente resultado:

statuscode : 200 exitcode : 0 body : { "login": "tj", "id": 25254, ... }


Pude obtener una solución mirando el curl doc que especifica el uso, para que la salida obtenga la salida stdout.

curl -o - http://localhost

Para obtener la respuesta solo con el código de retorno http, podría hacer

curl -o /dev/null -s -w "%{http_code}/n" http://localhost


Uso este comando para imprimir el código de estado sin ningún otro resultado. Además, solo realizará una solicitud HEAD y seguirá la redirección (respectivamente -I y -L ).

curl -o -I -L -s -w "%{http_code}" http://localhost

Esto hace que sea muy fácil verificar el código de estado en un script de salud:

sh -c ''[ $(curl -o -I -L -s -w "%{http_code}" http://localhost) -eq 200 ]''


el modo detallado te dirá todo

curl -v http://localhost