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

결함 내성 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으로 문의하세요.
Linux를 배우기가 어렵습니까?Linux를 배우기가 어렵습니까?Apr 18, 2025 am 12:23 AM

Linux를 배우는 것은 어렵지 않습니다. 1.Linux는 UNIX를 기반으로 한 오픈 소스 운영 체제이며 서버, 임베디드 시스템 및 개인용 컴퓨터에서 널리 사용됩니다. 2. 파일 시스템 및 권한 관리 이해가 핵심입니다. 파일 시스템은 계층 적이며 권한에는 읽기, 쓰기 및 실행이 포함됩니다. 3. APT 및 DNF와 같은 패키지 관리 시스템은 소프트웨어 관리를 편리하게 만듭니다. 4. 프로세스 관리는 PS 및 최고 명령을 통해 구현됩니다. 5. MKDIR, CD, Touch 및 Nano와 같은 기본 명령에서 학습을 시작한 다음 쉘 스크립트 및 텍스트 처리와 같은 고급 사용법을 사용해보십시오. 6. 권한 문제와 같은 일반적인 오류는 Sudo 및 CHMod를 통해 해결할 수 있습니다. 7. 성능 최적화 제안에는 HTOP을 사용하여 리소스 모니터링, 불필요한 파일 청소 및 SY 사용이 포함됩니다.

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

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

Linux의 주요 목적은 무엇입니까?Linux의 주요 목적은 무엇입니까?Apr 16, 2025 am 12:19 AM

Linux의 주요 용도에는 다음이 포함됩니다. 1. 서버 운영 체제, 2. 임베디드 시스템, 3. 데스크탑 운영 체제, 4. 개발 및 테스트 환경. Linux는이 분야에서 뛰어나 안정성, 보안 및 효율적인 개발 도구를 제공합니다.

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

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

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 12, 2025 am 11:43 AM

소개 Linux는 유연성과 효율성으로 인해 개발자, 시스템 관리자 및 전원 사용자가 선호하는 강력한 운영 체제입니다. 그러나 길고 복잡한 명령을 자주 사용하는 것은 지루하고 응급실이 될 수 있습니다.

Linux는 실제로 좋은 것은 무엇입니까?Linux는 실제로 좋은 것은 무엇입니까?Apr 12, 2025 am 12:20 AM

Linux는 서버, 개발 환경 및 임베디드 시스템에 적합합니다. 1. 서버 운영 체제로서 Linux는 안정적이고 효율적이며 종종 고 대전성 애플리케이션을 배포하는 데 사용됩니다. 2. 개발 환경으로서 Linux는 효율적인 명령 줄 도구 및 패키지 관리 시스템을 제공하여 개발 효율성을 향상시킵니다. 3. 임베디드 시스템에서 Linux는 가볍고 사용자 정의 가능하며 자원이 제한된 환경에 적합합니다.

Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Linux에서 윤리적 해킹을 마스터하기위한 필수 도구 및 프레임 워크Apr 11, 2025 am 09:11 AM

소개 : Linux 기반의 윤리적 해킹으로 디지털 프론티어 보안 점점 더 상호 연결된 세상에서 사이버 보안이 가장 중요합니다. 윤리적 해킹 및 침투 테스트는 취약점을 적극적으로 식별하고 완화하는 데 필수적입니다.

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

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