使用python2.7

时间:2015-06-16 22:05:21

标签: python mysql python-2.7 ssh automation

我需要制作一个python脚本,按顺序执行这些步骤,但我不确定如何设置它。

  • SSH进入服务器

  • 将文件夹从A点复制到B点(cp / foo / bar / folder1 / foo / folder2)

  • mysql -u root -pfoobar(此数据库只能从localhost访问)

    创建一个数据库,在mysql控制台中做一些其他的mysql工作

  • 用文件foobar中的Bar替换Foo的实例

  • 复制和编辑文件

  • 重新启动服务

事实上,我必须ssh到服务器,然后所有这一切真的让我很困惑。我查看了Fabric库,但这似乎一次只执行1个命令,并且不保留以前命令的上下文。

3 个答案:

答案 0 :(得分:1)

  

我查看了Fabric库,但这似乎一次只执行1个命令,并且不保留以前命令的上下文。

更多地了解Fabric。它可能仍然是你想要的。

This page有很多很好的例子。

通过“上下文”我假设您希望能够cd进入另一个目录并从那里运行命令。这就是fabric.context_managers.cd的用途 - 在该页面上搜索它。

答案 1 :(得分:1)

听起来您正在进行某种远程部署/配置。有一整套工具专业地设置它,看看Chef和Puppet。

或者,如果您只是想要快速简便地编写一些远程命令的脚本,那么pexpect可以做您所需要的。

  

Pexpect是一个纯Python模块,用于生成子应用程序;控制他们;并回应其产出中的预期模式。

我自己没有使用它,但快速浏览一下它的手册表明它可以正常使用SSH会话:https://pexpect.readthedocs.org/en/latest/api/pxssh.html

答案 2 :(得分:1)

我从未使用过Fabric。

我解决这些问题的方法(在开始使用saltstack之前)是使用pyexpect来运行ssh连接,以及所需的所有命令。 也许使用一系列sql脚本来处理数据库(只是为了让它更容易)会有所帮助。

另一种方式,因为您需要使用ssh访问远程服务器,所以它将使用paramiko远程连接和执行命令。当你想看到stdout上发生的事情时,情况会有点复杂(虽然有了pexpect,你会看到究竟发生了什么)。

但这完全取决于你真正需要的东西。