项目背景:
实验环境:
vmware workstation 11
centos6.5的系统下
fabric服务器主机:ip:192.168.0.14
堡垒机:ip:192.168.0.44
目标服务器:ip:192.168.0.26
SecureCRT (ssh远程连接软件)
软件介绍:
Fabric官网对于它的说明:
Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo
) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.
译文:
Fabric是基于python(2.5到2.7)实现ssh命令行工具,简化了ssh的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行、文件上传、下载及完整执行日志输出。
实验流程:
一、软件下载
[[email protected] ~]# easy_install fabric #首先你得确保你安装了python-setuptools
二、查看是否安装成功
可以看到没有报错,说明模块成功导入。
三、官网入门测试示例
1、fabric官网示例图
2、在自己主机上测试
因为我已经添加了ssh信任,所以没有提示输入远程主机的密码。
如果你不清楚如何设置,可以看我的下面的这篇文章。
http://9399369.blog.51cto.com/9389369/1750915
四、远程执行命令,并且在本机上得到输出
五、查看本地与远程主机信息。
1、创建一个脚本文件
2、通过fab命令调用local_task任务函数
3、通过fab命令调用remote_task任务函数
六、动态获取远程目录列表
1、脚本文件编写
[[email protected] ~]# vim fuchao02.py
#!/usr/bin/env python
from fabric.api import *
env.user="root"
env.hosts=[‘192.168.0.44‘]
env.passwd="123456"
@runs_once
def input_raw():
return prompt("please input directory name:",default="/root")
def worktask(dirname):
run("ls -l "+dirname)
@task
def go():
getdirname = input_raw()
worktask(getdirname)
2、脚本执行
七、网关模式文件上传与执行
1、脚本文件的编写
[[email protected] ~]# cat fuchao03.py #!/usr/bin/env python from fabric.api import * from fabric.context_managers import * from fabric.contrib.console import confirm env.user="root" env.gateway=‘192.168.0.44‘ #堡垒机ip env.hosts=[‘192.168.0.26‘] #真正的服务器 env.password="123456" #服务器密码 lpackpath="/home/lnmp1.2.tar.gz" rpackpath ="/home/install" @task def put_task(): run("mkdir -p /home/install") with settings(warn_only=True): result = put(lpackpath,rpackpath) if result.failed and not confirm("put file failed,Continue[Y/N]?"): abort("Aborting file put task!") @task def run_task(): with cd("/home/install"): run("tar -zxvf lnmp1.2.tar.gz") with cd("lnmp1.2/"): run("./install.sh ") @task def go(): put_task() run_task()
2、脚本执行
可以看到一切都是这么简单方便。。。。
项目总结: