使用 ssh 列出远程服务器上文件的 md5sum 和 return 文本文件中的输出?

List md5sum of files on a remote server using ssh and return the output in text file?

我有机器 A 和机器 B,它们都是 Ubuntu 服务器。现在我想使用 ssh 列出 Machine-B 上的所有文件。我想 return 将结果保存在一个文本文件中,这样我就可以分析结果并使用 scp 复制所需的文件。

ssh my_user_name@192.168.150.4 'bash -s tree /f'
ssh my_user_name@192.168.150.4 'bash -s ls -LR'

现在这个命令没有给出我想要的结果。谁能帮忙解决这个问题,这样我就可以使用 ssh 列出远程计算机上的所有文件,return 以文本文件的形式输出。

我正在使用 ls -LR to list files and SSH 远程执行脚本。 从答案中我解决了我的问题,我正在更新问题以满足一个小要求。

我通过这个命令得到了文件列表ssh my_user_name@192.168.150.4 ls /something/sub > output.txt

但我想要所有文件的 md5sum 而不是名称,因为 2 个文件名可能会 match.So 有没有办法列出所有文件和 return 所有文件的所有 md5sum 和 return 到 output.txt 文件。

您只需指定命令即可,无需使用 "bash"。您的默认 shell 将在远程设备上用于执行命令。

ssh remote-host command

要将 ls 命令的输出保存到文件中,您可以简单地使用通常的 shell 重定向:

ssh remote-host command > output.txt

以防万一您最终在一行中有多个文件名,您可能需要在 ls 命令行上使用 -1。另外,请记住,如果文件名包含 space,您需要在 shell 脚本中使用引号来支持这些...

对于连续的 运行 多个命令,虽然输出不会那么容易管理,但您可以使用引号和分号分隔命令(例如),如:

ssh remote-host "command1; command2; command3" > output.txt

关于 md5sum,您可以 运行 使用 find 命令和 md5sum:

针对目录中的所有文件
ssh remote-host "find . -type f -exec md5sum {} \;" > output.txt

将路径(示例中的 .)更改为适合您的路径。

将文件列表复制到机器 B 中的有效路径,然后使用 scp

将其复制回机器 A
ssh username@machineB 'ls -LR /path/to/dir > ~/fileList'

到return目录下所有文件的md5sum,用find作为

ssh username@machineB 'find /path/to/dir -type f -exec md5sum {} \; > ~/md5sum_fileList'

现在将文件复制回机器A,使用glob模式复制具有模式fileList

的文件
scp username@machineB:~/*fileList* username@machineA:~/