Ksh

使用 korn shell 通過 sftp 比較本地和遠端 MD5

  • October 11, 2018

我需要在本地文件和我剛剛推送的遠端文件之間創建和檢查校驗和。如果 MD5 檢查,則繼續,否則中斷。這需要在 KORN shell 腳本中,因為我們使用的是 AIX 機器。

這是我到目前為止的程式碼:

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 校驗和?

既然你說:我剛剛推送的遠端文件,任何文件差異的機率都極低超過sftp(基於ssh程式碼)。低至(按順序)兩個不同文件的 md5 具有相同雜湊和的機率。

而且,簡短的回答是:

sftp 會話不允許遠端執行命令。所以,如果你不能 ssh 到機器上,你就沒有辦法遠端執行 md5。

因此,要檢查遠端文件,您需要將其讀回,恕我直言,這似乎很愚蠢。


那麼,唯一的方法是:

ssh user@remote-dns-name 

一旦在它打開的外殼中,執行您需要的命令

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

然後,將創建的文件複製回本地電腦。

引用自:https://unix.stackexchange.com/questions/474645