我需要在本地文件和我刚刚推送的远程文件之间创建和检查校验和。如果 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
然后,将创建的文件复制回本地计算机。