使用 korn shell 通过 sftp 比较本地和远程 MD5

使用 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校验和?

答案1

既然你说:我刚刚推送的远程文件,在 sftp 上(基于 ssh 代码),任何文件差异的概率都极低。与两个不同文件的 md5 具有相同哈希值的概率一样低(数量级)。

而且,简短的答案是:

一个sftp 会话不允许远程执行命令。因此,如果您无法通过 ssh 连接到计算机,则无法远程运行 md5。

因此,要检查远程文件,您需要将其读回,恕我直言,这似乎很愚蠢。


那么,唯一的方法就是:

ssh user@remote-dns-name 

一旦进入打开的 shell,执行您需要的命令:

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

然后,将创建的文件复制回本地计算机。

相关内容