企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
![](http://www.fabfile.org/_static/logo.png) fabric是python2.5-2.7下基于SSH的扩展库和命令行工具,用于应用的部署和系统管理任务。-- 摘自[官网][1] fabric是基于`paramiko`模块封装开发的。paramiko更底层。 ### 安装 fabric依赖pycrypto,paramiko,要卸载python-pycrypto与python-paramiko pycrypto最好安装2.3版本,如果安装2.6.1会有gmp版本低的**警告** ```bash pip install pycrypto==2.3 pip install paramiko==1.12.4 pip install fabric==1.8.3 ``` gmp版本过低警告,注释相应的文件可以解决;或者安装按照上面的版本进行搭配不会出现这个问题。 ``` from Crypto.Util.number import ceil_shift, exact_log2, exact_div File "/usr/lib64/python2.6/site-packages/Crypto/Util/number.py", line 56, in <module> if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC: AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC' ``` ### 使用方法 #### 建立fabfile.py ```python from fabric.api import run def host_type(): run('uname -s') ``` #### 命令行执行 格式: `fab -H ip func` -H:指定IP或主机名 ``` $ fab -H localhost,linuxbox host_type [localhost] run: uname -s [localhost] out: Darwin [linuxbox] run: uname -s [linuxbox] out: Linux Done. Disconnecting from localhost... done. Disconnecting from linuxbox... done. ``` #### 在fabfile.py中设置用户名和密码,主机分组 需要导入 env模块 格式:`fab -R groupname host_type` -R:指定分组名称 ``` from fabric.api import run, env # 设置用户名和密码,默认用密钥登录 env.user = 'root' env.password = 'root' # 定义主机 #env.hosts = ['192.168.101.171','192.168.101.181'] # 定义主机组-方式1 env.roledefs = {'web': ['192.168.101.171',], 'db': ['192.168.101.171',]} # 定义主机组-方式2 #env.roledefs['web'] = ['192.168.101.171',] #env.roledefs['db'] = ['192.168.101.171',] # 定义函数 def host_type(): run('uname -s') ``` [1]:http://www.fabfile.org