博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fabric SSH链接时关于找不到主机的问题
阅读量:4474 次
发布时间:2019-06-08

本文共 2326 字,大约阅读时间需要 7 分钟。

先上一段简单的fabric代码:

from __future__ import with_statement from fabric.api import * env.user = 'zhangsan' env.hosts = ['192.168.1.1'] env.password = '123456' with settings(warn_only=True):     local('pwd') with cd('/home/jianping.fan'):     run('ls')

 当执行代码后出现:No hosts found. Please specify (single) host string for connection:

出现该错误的原因是fabric的环境env有hosts和hosts_string俩种方法,前者是连接多台机器,而后者是单台链接,按官方文档的说法,使用hosts指定主机,会遍历该列表中主机ip,但实际执行中并没有这样做,猜测也许与fabric的版本有关系.我安装的版本号是:1.14.0

 

因此,将env.hosts = ['192.168.1.1] 改成env.hosts_string = '192.168.1.1'即可解决单台机器的连接问题. 

 

 附Fabric env对象和常用API

 env对象:

env.hosts   #定义目标主机,可以用IP或主机名表示,以python的列表形式定义。如env.hosts=['192.168.1.21','192.168.1.22']env.exclude_hosts   #排除指定主机,如env.exclude_hosts=['192.168.1.21']env.user   #定义用户名,如env.user='root'env.port   #定义端口,默认为22,如env.port='22'env.password   #定义密码,如env.password='123456'env.passwords  #定义多个密码,不同主机对应不同密码,如:env.passwords = {'root@192.168.1.21:22':'123456','root@192.168.1.22:22':'654321'}env.gateway   #定义网关(中转、堡垒机)IP,如env.gateway='192.168.1.23env.roledefs   #定义角色分组,比如web组合db组主机区分开来:env.roledefs = {'webserver':['192.168.1.21','192.168.1.22'],'dbserver':['192.168.1.25','192.168.1.26']}env.deploy_release_dir   #自定义全局变量,格式:env. + '变量名称',如env.age,env.sex等

 

env.roledefs的使用方法实例:

env.roledefs = {
'webserver':['192.168.1.21','192.168.1.22'],'dbserver':['192.168.1.25','192.168.1.26']}#引用分组时使用python装饰器方式来进行,如:@roles('webserver')def webtask(): run('/usr/local/nginx/sbin/nginx')@roles('webserver','dbserver')def publictask(): run('uptime') 

-----------------------------------------华丽的分割线----------------------------------------------------------------------------------------

 常用API:

local    #执行本地命令,如local('uname -s')lcd      #切换本地目录,如lcd('/home')cd       #切换远程目录run     #执行远程命令sudo   #sudo方式执行远程命令,如sudo('/etc/init.d/httpd start')put     #上次本地文件导远程主机,如put('/home/user.info','/data/user.info')get     #从远程主机下载文件到本地,如:get('/data/user.info','/home/user.info')prompt  #获得用户输入信息,如:prompt('please input user password:')confirm  #获得提示信息确认,如:confirm('Test failed,Continue[Y/N]?')reboot   #重启远程主机,如:reboot()@task   #函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑@runs_once   #函数修饰符,标识的函数只会执行一次,不受多台主机影响

 

 

更多详细用法请移步官网: https://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html 

       git:   https://github.com/fabric/fabric/ 

 

转载于:https://www.cnblogs.com/fanjp666888/p/10844643.html

你可能感兴趣的文章
Redis与Python交互
查看>>
Maximum-SubsequenceSum
查看>>
常用的一些shell变量
查看>>
Android无法删除项目+导入项目报错
查看>>
poj 2349(最小生成树应用)
查看>>
Shell编程-条件测试 | 基础篇
查看>>
AngularJs学习笔记1——总体介绍
查看>>
C语言第十二讲,文件操作.
查看>>
绝对定位和相对定位
查看>>
实习第二天——学习mac终端命令(unix命令)和git代码管理
查看>>
微信支付
查看>>
吴裕雄--天生自然 高等数学学习:含参变量的积分
查看>>
成本的费用归集
查看>>
本周ASP.NET英文技术文章推荐[01/28 - 02/03]
查看>>
运行时库组件 RuntimePack v19.06.05 Full 纯净安装版
查看>>
NYOJ100 - 1的个数
查看>>
左侧定宽右侧自适应布局
查看>>
文件和目录的访问控制(4) 审核规则
查看>>
搭建svn的一些问题
查看>>
Python 爬虫插件
查看>>