Ksh
使用 korn shell 通過 sftp 比較本地和遠端 MD5
我需要在本地文件和我剛剛推送的遠端文件之間創建和檢查校驗和。如果 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
然後,將創建的文件複製回本地電腦。