【发布时间】:2019-10-17 06:41:12
【问题描述】:
我想通过 ssh 执行一个简单的任务:返回给定文件列表中不存在的所有文件。
我这样做的方法是将以下内容包装在 ssh 会话中:
for f in $(files); do stat $f > /dev/null ;done
stdout 重定向会忽略所有好的文件,然后读取 stderr 会给我一个所有未找到文件的列表。
我首先想到在subprocess.run(..., shell=True) 中使用带有ssh 部分的这个bash 代码,但不鼓励这样做。相反,建议使用paramiko。
我试图理解为什么以及何时原生 python 比子处理 bash 更好
- 不同操作系统的可计算性(对我来说不是问题,因为代码与 Ubuntu 紧密相关)
- 错误和异常处理 - 我确实得到并认为它很重要,尽管从子进程中捕获异常或退出代码也很容易
在我看来,原生 python 的缺点是需要涉及一些复杂的模块,例如 paramiko,而 bash 的 ssh 和 stat 在我看来更简单易用
对于何时以及如何选择 bash 而不是 python 是否有任何指导方针?
这个问题主要是关于在 ssh 上使用命令,但与 bash 以简单快捷的方式执行的任何其他命令以及 python wraps 相关
【问题讨论】:
-
paramiko是一个 SSH 库——这与形成在另一端运行的命令有什么关系? -
我问的是使用 paramiko 进行 ssh 连接与使用 subprocess.run('ssh ... ')
标签: python python-3.x bash subprocess