"배너 가져오기 실패"로 인한 컬 오류 2를 처리하는 방법은 무엇입니까?

"배너 가져오기 실패"로 인한 컬 오류 2를 처리하는 방법은 무엇입니까?

컬 7.64.0을 실행하는 4개의 라즈베리 파이가 있습니다. 각 Pi는 2분마다 동일한 호스트에 웹캠 이미지를 업로드합니다. 파이 4개에 대해 시간당 30개의 이미지입니다. 이 모든 작업은 간단한 bash 쉘 스크립트를 사용하여 수행됩니다. 호스트와의 인증은 공개 키를 통해 수행됩니다.

일반적으로 이것은 잘 작동하지만 로그에 따르면 "Ssh 세션 설정 실패: -13, 배너 가져오기 실패"로 인해 파이의 전부 또는 대부분이 컬 오류 2로 인해 실패합니다.

이것은 컬의 오류로 인한 것이 아니라는 것을 알고 있지만, 컬을 사용하여 오류를 극복할 수 있는 방법이 있는지 궁금합니다.

지금은 다음 매개변수를 사용하고 있습니다.

--connect-timeout 10 --max-time 120 --retry 5 이미지는 2분마다 업로드되므로 max-time을 120으로 설정했습니다. 나머지 두 개는 무엇이 효과가 있을지에 대한 내 추측일 뿐입니다.

전체 컬 명령은 다음과 같습니다.

    curl -s -v -u me: \
     --connect-timeout 10 \
     --max-time 120 \
     --retry 5 \
     --pubkey ~/.ssh/id_rsa.pub \
     -T $file $host >> $log 2>&1

어디:

$file is: the file to be uploaded
$host is: host=sftp://ftp.me.com/~/public_html/
$log  is: the local log file

자세한 컬 출력은 다음과 같습니다.

*   Trying nnn.nnn.nnn.nnn...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x3698b0)
* Connected to ftp.mgnewman.com (nnn.nnn.nnn.nnn) port 22 (#0)
* Failure establishing ssh session: -13, Failed getting banner
* Closing connection 0

더 좋은 방법이 있나요?

답변1

이것은 질문에 대한 대답은 아니지만 문제에 대한 하나의 해결책입니다. 나는 do 루프로 컬 명령을 둘러쌌습니다. 컬은 "배너 가져오기 실패" 오류를 연결 오류로 간주하지 않는 것 같으므로 "재시도"하지 않습니다. 시간이 초과되었습니다. 내가 사용하는 것은 다음과 같습니다.

for i in {1..3}
 do

    curl -s -v -u mgnewman: \
     --connect-timeout 25 \
     --max-time 40 \
     --retry 3 \
     --pubkey ~/.ssh/id_rsa.pub \
     -T $file $host >> $log 2>&1

        err=$?
        echo $'\n'"`date`" Upload Ended "$err" - $(hostname) >> "$log"


        if [ $err -eq 0 ] ; then
                break
        fi
done

보기 흉하지만 4개의 ​​파이 중 어느 것에도 컬 2 오류가 더 이상 없습니다.

관련 정보