Python 为什么要在结构脚本中逐行重新实现shell命令?

Python 为什么要在结构脚本中逐行重新实现shell命令?,python,shell,deployment,fabric,Python,Shell,Deployment,Fabric,Fabric是一种用于“执行本地或远程shell命令”的工具 为什么要在长结构脚本中逐行重新实现远程shell脚本 也就是说,为什么不编写一个简短的结构脚本来运行一个长的远程shell脚本呢?如果我必须在10台服务器上运行相同的脚本,这不是一个好主意。这意味着我不仅要在10台服务器上粘贴相同的长脚本,还要确保如果我在1台服务器上更改它,那么更改必须应用于所有服务器。我知道这可以通过将脚本保存在共享位置来避免,但将脚本保存在fabfile中要有组织得多,它不仅可以控制版本,而且可以在所有角色之间保

Fabric是一种用于“执行本地或远程shell命令”的工具

为什么要在长结构脚本中逐行重新实现远程shell脚本


也就是说,为什么不编写一个简短的结构脚本来运行一个长的远程shell脚本呢?

如果我必须在10台服务器上运行相同的脚本,这不是一个好主意。这意味着我不仅要在10台服务器上粘贴相同的长脚本,还要确保如果我在1台服务器上更改它,那么更改必须应用于所有服务器。我知道这可以通过将脚本保存在共享位置来避免,但将脚本保存在fabfile中要有组织得多,它不仅可以控制版本,而且可以在所有角色之间保持一致。

lobster1234提出了一个很好的观点,即您不希望在10台服务器上手动粘贴一个长的远程shell脚本。但是,如果仍然希望避免将长的远程shell脚本重写为长结构脚本,则可以编写结构脚本,将该远程shell脚本复制到指定的服务器,执行该脚本,然后删除该脚本。通过这种方式,您可以同时对fabfile和shell脚本进行修订控制,但避免将shell脚本重写为Fabric脚本。

此外,我认为您选择的路径将取决于您尝试执行的操作。有些事情在python中更容易(在您的fabfile中编写),而另一些事情在shell中更容易(采用上面提到的一种shell方法)

无论哪种方式,fabric都致力于集中化和可移植性,实际上什么在起作用并不重要