简单分享下Python 自动化库Invoke

一、什么是 Invoke?

Invoke 是一个 Python 库,用于编写自动化脚本。它提供了一个简洁的 API 来定义和执行任务,非常适合用于构建、部署、测试等场景。Invoke 支持在本地或远程服务器上执行命令,并且可以很容易地与 Python 的标准库和其他第三方库集成。

二、如何安装 Invoke?

pip install invoke‍

三、Invoke 基础

Invoke 使用装饰器来定义任务。下面是一个简单的 Invoke 脚本示例,该脚本定义了一个名为 hello 的任务:

在这个例子中,@task 装饰器标记了一个函数,这个函数成为了 Invoke 的一个任务。c.run 方法用于执行命令。要运行这个任务,可以在命令行中输入:invoke hello

四、运行测试

在软件开发中,运行测试是必不可少的一步。我们可以使用 Invoke 来自动化这一过程:

为了实现Python自动化运维巡检,可以使用Python的paramiko来连接远程服务器并执行命令,也可以使用Fabric来简化远程命令执行和文件传输等操作。下面是使用paramiko实现远程命令执行的示例代码: ```python import paramiko # 连接远程服务器 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='remote_host', port=22, username='username', password='password') # 执行远程命令 stdin, stdout, stderr = ssh.exec_command('ls -l') print(stdout.read().decode()) # 关闭连接 ssh.close() ``` 如果需要执行多个命令,可以将多个命令放在一个字符串中,用分号隔开,例如: ```python command = 'ls -l; df -h' stdin, stdout, stderr = ssh.exec_command(command) print(stdout.read().decode()) ``` 如果需要执行交互式命令,例如输入密码等,可以使用paramiko的Channel对象,例如: ```python channel = ssh.invoke_shell() channel.send('sudo command\n') channel.send('password\n') print(channel.recv(1024).decode()) ``` 除了paramiko,还可以使用Fabric来简化远程命令执行和文件传输等操作。Fabric基于paramiko开发,提供了更加简洁的API。下面是使用Fabric实现远程命令执行的示例代码: ```python from fabric import Connection # 连接远程服务器 c = Connection(host='remote_host', user='username', connect_kwargs={'password': 'password'}) # 执行远程命令 result = c.run('ls -l', hide=True) print(result.stdout) # 关闭连接 c.close() ``` 如果需要执行交互式命令,例如输入密码等,可以使用Fabric的prompt函数,例如: ```python from fabric import Connection, Config from getpass import getpass # 连接远程服务器 config = Config(overrides={'sudo': {'password': getpass('sudo password: ')}}) c = Connection(host='remote_host', user='username', connect_kwargs={'password': 'password'}, config=config) # 执行远程命令 result = c.sudo('command') print(result.stdout) # 关闭连接 c.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小软件大世界

谢谢支持,我将会更加努力的寻找

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值