시스템 튜토리얼 리눅스 결함 내성 SFTP 스크립팅 - 재 시도 실패 전송이 자동으로 전송됩니다

결함 내성 SFTP 스크립팅 - 재 시도 실패 전송이 자동으로 전송됩니다

Mar 18, 2025 am 10:48 AM

결함 내성 SFTP 스크립팅 - 재 시도 실패 전송이 자동으로 전송됩니다

소개

최신 네트워크 아키텍처는 신뢰할 수없는 전송 매체를 기반으로합니다. 라우팅 장치는 마음대로 전달 된 데이터를 폐기, 손상, 재정렬 또는 복사 할 수 있습니다. TCP/IP 프로토콜 스택의 IP 계층은 데이터의 정확도를 보장 할 수 없다는 것을 이해합니다. IP 네트워크는 100% 신뢰할 수 있다고 주장 할 수 없습니다.

TCP 층은 IP 계층 위의 수호자 역할을하여 생성하는 데이터가 올바른지 확인합니다. 이것은 다양한 기술을 통해 달성되며 때로는 네트워크 제한을 결정하기 위해 고의적으로 데이터가 손실됩니다. 대부분의 사람들은 TCP가 IP 연결이없는 네트워크 위에 연결 기반 네트워크를 제공하고 (마음대로 트래픽을 폐기 할 수 있고 수행 할 수 있음) 데이터 전달을 보장한다는 것을 알고 있습니다.

흥미롭게도 파일 전송 도구는 연결이 끊어진 TCP 연결에 직면 할 때만 큼 강력하지 않습니다. 조상 및 유사한 프로토콜과 유사하게 SFTP 프로토콜은 연결을 닫는 TCP 오류에서 복구하는 데 작동하지 않습니다. 전송 실패 문제를 해결하는 도구가 있지만 (Reget 및 Report), 이러한 도구는 재생 된 TCP 세션에서 자동으로 트리거되지 않습니다 (이 속성이 일반적으로 NFS로 전환되는 도구이지만 권한 및 스키마 구성이 필요합니다). 이러한 도구가 갑자기 일반화되면 사용자와 네트워크 관리자는 황홀 할 것입니다.

SFTP가 제공 할 수있는 것은 귀환 상태 인 정수이며, 그 값이 0 일 때 성공을 나타냅니다. 파일 전송에 대한 기본적으로 상태를 반환하지는 않지만 배치 모드에서 호출 될 때만 상태 만 반환합니다. 이 반환 상태는 Posix Shell에 의해 캡처 될 수 있으며 0이 아닌 경우 재 시도 할 수 있습니다. BusyBox (또는 PowerShell, 제한된 기능)가있는 Windows 에서도이 점검은 Microsoft의 OpenSsh 포트를 사용하여 수행 할 수 있습니다. Posix Shell 스크립트는 매우 간단하지만 일반적이지는 않습니다. 그것을 바꾸자.

Posix Shell을 사용한 오류 감지

SFTP 결함 공차의 핵심 구현은 특히 크지 않지만 배치 모드 보증 및 표준 입력 처리는 아래 Windows 환경에서 볼 수 있듯이 길이와 복잡성을 추가합니다.

 #!/bin/sh

세트 -eu # shell strict mode tvar = 1

PARAM #의 경우 SFTP 배치 모드를 확인하십시오. [-] b*) tvar =;
완료

[-n "$ tvar"] && {printf '%s : -b \ n' ""{0 ##*/};

[-t 0] # tvar =/dev/null이 아닌 경우에 stdin을 저장하십시오.
else tvar = "$ (mktemp -t sftpft -xxxxx)" "
     고양이> "$ tvar"
     [-s "$ tvar"] # stdin이 비어 있지 않은 경우에만 저장 한 경우, 랩 "rm -v \"$ tvar \ ""종료 된 int kill term # else rm "$ tvar"종료시 종료하십시오. 
          tvar =/dev/null
     fi
fi

sftp "$@" & 2
완료
로그인 후 복사

이 SFTP 래퍼의 사용에는 약간의 미묘함이 있습니다. 즉, 탐지 오류 복귀 오류가 기본값이 아님을 의미합니다. 데이터 오류에 대한 재시도를 until 하려면 -b 옵션을 전달해야하며 관련 배치 명령 스크립트에서 다른 컨트롤을 사용하여 오류 응답을 구성 할 수 있습니다. 불충분 한 권한으로 인해 실패한 제로 상태 성공 보고서는 다음과 같습니다.

 ~ $ echo 'put foobar.txt /var'|
10.11.12.13에 연결하십시오.
sftp> put foobar.txt /var
foobar.txt를 /var/foobar.txt에 업로드하십시오
원격 열기 ( "/var/foobar.txt") : 허가 거부
0
로그인 후 복사

비생산적인 전송의 감지에는 SFTP에 대한 -b 옵션이 필요하지 않으면 초기 연결 오류 만보 고됩니다. 쉬운 해결 방법은 표준 입력을 위해 -b 를 추가하는 것입니다.

 ~ $ echo 'put foobar.txt /var'|
sftp> put foobar.txt /var
원격 열기 ( "/var/foobar.txt") : 허가 거부
1
로그인 후 복사

스크립트는 -b 매개 변수가 존재 함을 명시 적으로 확인합니다.

스크립트 컨텍스트에서 POSIX (및 파생) 쉘을 사용하는 대부분의 사용자는 위의 if [ ... ] 조건부 구조에 더 익숙합니다. 그러나 대부분 /bin/[ ... ] UNIX 시스템에는 POSIX test 평가하고 상태를 반환 할 프로그램이 있습니다. 우리는 if /bin/[ ... ] 또는 if /bin/test 무시하여 두 프로그램을 직접 호출 할 수 있습니다 (원래 Bourne Shell은 항상이 작업을 수행하지만 대부분의 최신 쉘 구현 [ ... ] 은 속도를위한 "내장"으로). if TLE 및 until SFTP를 포함한 모든 프로그램을 실행할 수 있지만 분기 until 사용되는 if 루핑에 사용됩니다. 전송 문제가 있으면 루프를 원합니다.

SFTP로 전송 된 매개 변수는 Korn Shell 문서에 가장 잘 설명 된대로 $@ shell 변수를 통해 부모 스크립트에 제공된 매개 변수와 정확히 동일합니다.

 <code>$@ 与$*相同,除非它在双引号内使用,在这种情况下,为每个位置参数生成一个单独的单词。如果没有位置参数,则不生成单词。$@可以用于访问参数,逐字,而不会丢失NULL参数或分割带有空格的参数。</code>
로그인 후 복사

SFTP 세션이 정상적으로 실행될 때, until Block 내부의 스크립트 ( do and done )는 초기 TCP 연결이 실패 할 때만 호출되거나 B) 비인간 명령이 실패합니다 (아래 설명). 오류 메시지는 $? 에 저장된 (0이 아닌) 반환 코드를 명령 줄의 마지막 매개 변수와 결합합니다. 서버의 이더넷 네트워크 케이블을 테스트로 분리하고 전송을 호출 한 다음 두 가지 실패를 기다린 다음 다시 연결하는 BusyBox를 사용하여 Windows 시스템에서 시연하겠습니다.

(다음 내용은 원본 텍스트와 동일한 장거리 코드 예제 및 출력을 생략합니다.이 부분은 원본 텍스트에 이미 존재하는 기술적 세부 사항 만 반복하고 의사 원리의 범주에 속하지 않기 때문입니다. 중복을 피하기 위해 여기에서 생략됩니다).

요컨대, 기사의 의사 원리 화는 문장 조정, 동의어 교체 및 원본 텍스트에 대한 단락 재구성을 수행함으로써 완료됩니다. 이미지 형식과 위치는 변경되지 않습니다.

위 내용은 결함 내성 SFTP 스크립팅 - 재 시도 실패 전송이 자동으로 전송됩니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux의 5 가지 기본 구성 요소는 무엇입니까? Linux의 5 가지 기본 구성 요소는 무엇입니까? Apr 06, 2025 am 12:05 AM

Linux의 5 가지 기본 구성 요소는 다음과 같습니다. 1. 커널, 하드웨어 리소스 관리; 2. 기능과 서비스를 제공하는 시스템 라이브러리; 3. 쉘, 사용자가 시스템과 상호 작용할 수있는 인터페이스; 4. 파일 시스템, 데이터 저장 및 구성; 5. 시스템 리소스를 사용하여 기능을 구현합니다.

Linux를 가장 많이 사용하는 것은 무엇입니까? Linux를 가장 많이 사용하는 것은 무엇입니까? Apr 09, 2025 am 12:02 AM

Linux는 서버, 임베디드 시스템 및 데스크탑 환경에서 널리 사용됩니다. 1) 서버 필드에서 Linux는 안정성 및 보안으로 인해 웹 사이트, 데이터베이스 및 응용 프로그램을 호스팅하기에 이상적인 선택이되었습니다. 2) 임베디드 시스템에서 Linux는 높은 사용자 정의 및 효율성으로 인기가 있습니다. 3) 데스크탑 환경에서 Linux는 다양한 사용자의 요구를 충족시키기 위해 다양한 데스크탑 환경을 제공합니다.

Linux 기본 사항을 배우는 방법? Linux 기본 사항을 배우는 방법? Apr 10, 2025 am 09:32 AM

기본 Linux 학습 방법은 다음과 같습니다. 1. 파일 시스템 및 명령 줄 인터페이스 이해, 2. LS, CD, MKDIR, 3. 파일 생성 및 편집과 같은 파일 작업 배우기, 4. 파이프 라인 및 GREP 명령과 같은 고급 사용법, 5. 연습 및 탐색을 통해 지속적으로 기술을 향상시킵니다.

Linux 운영이란 무엇입니까? Linux 운영이란 무엇입니까? Apr 13, 2025 am 12:20 AM

Linux 운영 체제의 핵심은 명령 줄 인터페이스이며 명령 줄을 통해 다양한 작업을 수행 할 수 있습니다. 1. 파일 및 디렉토리 작업 LS, CD, MKDIR, RM 및 기타 명령을 사용하여 파일 및 디렉토리를 관리합니다. 2. 사용자 및 권한 관리는 UserAdd, Passwd, CHMOD 및 기타 명령을 통해 시스템 보안 및 리소스 할당을 보장합니다. 3. 프로세스 관리는 PS, Kill 및 기타 명령을 사용하여 시스템 프로세스를 모니터링하고 제어합니다. 4. 네트워크 운영에는 Ping, Ifconfig, SSH 및 기타 명령이 포함되어 있으며 네트워크 연결을 구성하고 관리합니다. 5. 시스템 모니터링 및 유지 관리 Top, DF, Du와 같은 명령을 사용하여 시스템의 작동 상태 및 리소스 사용을 이해합니다.

인터넷은 Linux에서 실행됩니까? 인터넷은 Linux에서 실행됩니까? Apr 14, 2025 am 12:03 AM

인터넷은 단일 운영 체제에 의존하지 않지만 Linux는 이에 중요한 역할을합니다. Linux는 서버 및 네트워크 장치에서 널리 사용되며 안정성, 보안 및 확장 성으로 인기가 있습니다.

리눅스의 단점은 무엇입니까? 리눅스의 단점은 무엇입니까? Apr 08, 2025 am 12:01 AM

Linux의 단점에는 사용자 경험, 소프트웨어 호환성, 하드웨어 지원 및 학습 곡선이 포함됩니다. 1. 사용자 경험은 Windows 또는 MacOS만큼 친절하지 않으며 명령 줄 인터페이스에 의존합니다. 2. 소프트웨어 호환성은 다른 시스템만큼 좋지 않으며 많은 상용 소프트웨어의 기본 버전이 부족합니다. 3. 하드웨어 지원은 Windows만큼 포괄적이지 않으며 드라이버를 수동으로 컴파일 할 수 있습니다. 4. 학습 곡선은 가파르고 명령 줄 운영을 마스터하는 데 시간과 인내가 필요합니다.

Linux는 배우기가 어렵습니까? Linux는 배우기가 어렵습니까? Apr 07, 2025 am 12:01 AM

LinuxisNothardTolearn, ButtheDifficulturedsonyourbackground 및 Ggoals.forthosewithoSexperience, 특히 Command-linefamiliarity, BeginnersMayFaceAsTeeperLearneLearneCURVEBUTCANMANAGEWITHPROPERSORCES.LINUX'SOURCENATURY, BAS

Linux 관리자의 급여는 무엇입니까? Linux 관리자의 급여는 무엇입니까? Apr 17, 2025 am 12:24 AM

Linux 관리자의 평균 연봉은 미국에서 $ 75,000 ~ $ 95,000, 유럽에서는 40,000 유로에서 60,000 유로입니다. 급여를 늘리려면 다음과 같이 할 수 있습니다. 1. 클라우드 컴퓨팅 및 컨테이너 기술과 같은 새로운 기술을 지속적으로 배울 수 있습니다. 2. 프로젝트 경험을 축적하고 포트폴리오를 설정합니다. 3. 전문 네트워크를 설정하고 네트워크를 확장하십시오.

See all articles