korn 쉘을 사용하여 sftp를 통해 로컬 및 원격 MD5 비교

korn 쉘을 사용하여 sftp를 통해 로컬 및 원격 MD5 비교

로컬 파일과 방금 푸시한 원격 파일 간의 체크섬을 생성하고 확인해야 합니다. MD5 검사가 통과하면 계속하고 그렇지 않으면 중단합니다. 우리는 AIX 시스템을 사용하고 있으므로 KORN 쉘 스크립트에 있어야 합니다.

이것은 지금까지 내 코드입니다.

for file in <<Directory>>; do
    -- Get MD5 of local file
    LOCALMD5=!chsum "$(basename "$file")"
    sftp <<USER>>@<<IP>> <<EOF
    PUT file <<SFTP OUTPUT FOLDER>>
    REMOTEMD5= <<<COMMAND HERE>>>>  <<--- Which command?
    IF [[LOCALMD5!=REMOTEMD5]]; THEN
        RETURNVALUE = -1
        BREAK
done

print RETURNVALUE

원격 MD5 체크섬을 얻는 방법은 무엇입니까?

답변1

당신이 말한 이후 :방금 푸시한 원격 파일, sftp(ssh 코드 기반)에서는 파일 차이가 발생할 가능성이 매우 낮습니다. 서로 다른 두 파일의 md5가 동일한 해시 값을 가질 확률만큼 낮습니다(크기 순서).

그리고 짧은 대답은 다음과 같습니다.

하나sftp 세션은 명령의 원격 실행을 허용하지 않습니다.. 따라서 SSH를 통해 머신에 연결할 수 없으면 md5를 원격으로 실행할 수 없습니다.

따라서 원격 파일을 확인하려면 다시 읽어야 하는데 IMHO는 어리석은 것 같습니다.


그렇다면 유일한 방법은 다음과 같습니다.

ssh user@remote-dns-name 

열린 쉘 내부에 있으면 다음을 실행하십시오.필요한 명령:

$ cd path/to/file
$ csum -h MD5 >MD5-hashsum-filename

그런 다음 생성된 파일을 로컬 컴퓨터에 다시 복사합니다.

관련 정보