컬을 테스트로 사용하기

컬을 테스트로 사용하기

Elastic Search 리포지토리 리소스를 자동으로 생성하기 위해 Puppet 구성을 작성 중입니다. 안타깝게도 제가 아는 한 Elastic Search YAML 구성 파일에서는 이 구성을 지정할 수 없으므로 HTTP와 Curl만 사용할 수 있습니다. 나는 다음을 자원으로 선언했습니다.

file { 'curator_repository_config':
    path    => "${elasticsearch::install_dir}/config/s3-repository.json",
    owner   => $elasticsearch::user,
    group   => $elasticsearch::user,
    mode    => '0400',
    content => template('chromeriver/curator/s3-repository.json.erb'),
}

exec { 'create_es_repository':
    command => "curl -is -X PUT 'http://localhost:9200/_snapshot/s3' -d @${elasticsearch::install_dir}/config/s3-repository.json",
    unless  => "curl -is -X GET 'http://localhost:9200/_snapshot/s3'",
    path    => '/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin',
    user    => $elasticsearch::user,
    require => [
        Service['elasticsearch'],
        File['curator_repository_config']
    ]
}

이 질문에 대답하기 위해 Puppet 구성을 이해할 필요는 없지만 위의 내용은 본질적으로 s3-repository.jsonElastic Search에 대한 POST에서 사용되는 구성 세부 정보가 포함된 파일을 생성합니다.

두 번째 리소스는 조건부로 실행되며 다음 명령의 반환 코드가 0이 아닌 경우에만 실행됩니다. 본질적으로 다음을 수행합니다.

#!/bin/bash
if ! curl -is -X GET 'http://localhost:9200/_snapshot/s3' &>/dev/null; then
    curl -is -X PUT 'http://localhost:9200/_snapshot/s3' @/path/to/s3-repository.json
fi

내가 겪고 있는 문제는 요청 시 a를 curl반환하는 것입니다. 0응답이 200 응답이 아닌 경우 반환되기를 원합니다.404GETcurl1

이를 수행하는 쉬운 방법이 있습니까 curl?

답변1

--fail옵션에서 답을 찾았습니다 curl. 이 옵션을 전달하면 curl200이 아닌 응답에 대해 0이 아닌 종료 코드가 반환됩니다.

curl -i -X GET --fail 'http://localhost:9200/_snapshot/s3'

관련 정보