Fabric SSH链接时关于找不到主机的问题
先上一段简单的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.23
env.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/
Fabric SSH链接时关于找不到主机的问题的更多相关文章
- ssh 远程链接时出现错误提示:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
ssh 远程链接时出现错误提示 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST I ...
- 【问题:SSH】win10使用SSH链接服务器时,提示:Host key verification failed
异常原因:当前连接新建的验证信息与之前保存的验证信息不一致,将原来的验证信息删除就可以了. 1 使用以下命令,清空之前缓存的信息.或者直接打开C:\Users\Nolan\.ssh\known_hos ...
- 使用whiptail写linux字符界面ssh链接工具2.0
先看一下效果 选择分组 选择服务器 开始链接 为什么写 之前写过一个字符界面的链接工具,但是看起来比较简陋,他是这个样子的: 看起来十分不好看.后来在网上看到shell中有一个whiptail工具可以 ...
- 菜鸟在C语言编译,链接时可能遇到的两个问题
最近在看 CSAPP (Computer Systems A Programmers Perspective 2nd) 的第七章 链接.学到了点东西,跟大家分享.下文中的例子都是出自CSAPP第七章. ...
- 【随笔】ssh登录时如何直接在参数中加入登录密码
如同apt-get安装程序时会有-y参数来避免交互输入一样,我也希望在ssh登录时能够直接附加登录密码以避免交互式输入密码这一步,网上找了找,方法很多. 比如直接通过密钥免密码登录,不过需要改动很多, ...
- 使用SQL Server 2008远程链接时SQL数据库不成功的解决方法
关键设置: 第一步(SQL2005.SQL2008): 开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Serv ...
- 解决SSH远程执行命令找不到环境变量的问题
通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同, ...
- ssh连接时提示THE AUTHENTICITY OF HOST XX CAN’T BE ESTABLISHED
ssh链接云主机: ssh root@123.59.xx.xx 报错:THE AUTHENTICITY OF HOST XX CAN’T BE ESTABLISHED 解决办法: ssh -o Str ...
- 折腾gcc/g++链接时.o文件及库的顺序问题(转)
转自: http://www.cnblogs.com/OCaml/archive/2012/06/18/2554086.html#sec-1-1 折腾gcc/g++链接时.o文件及库的顺序问题 Tab ...
随机推荐
- 你真的了解JS里的"new"吗?
我们常常喜欢用new关键字去创建一些对象如new Vue(),但是这个关键字的背后究竟做了什么其实没太多人去关注. 想象我们是苹果公司,要生产30部iPod,规定: 每台iPod都会有自己的ID 每台 ...
- HttpURLConnection 中Cookie 使用
方式一: 如果想通过 HttpURLConnection 访问网站,网站返回cookie信息,下次再通过HttpURLConnection访问时,把网站返回 cookie信息再返回给该网站.可以使用下 ...
- SpringCloud降级熔断 Hystrix
1.分布式核心知识之熔断.降级讲解 简介:系统负载过高,突发流量或者网络等各种异常情况介绍,常用的解决方案 1.熔断: 保险丝,熔断服务,为了防止整个系统故障,包含子和下游服务 下单服 ...
- vue项目梳理
vue实例 vue2.x中创建vue实例,挂载到dom节点 点击查详情 <div id="vue_det"> <h1>site : {{site}}< ...
- Ajax的GET,POST方法传输数据和接收返回数据
//首先创建一个Ajax对象 function ajaxFunction(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp=new ...
- C# - Timer 实现跑马灯
- Python 脚本的执行
源文件如下,文件名test.py,其中UTF-8根据实际情况而定,Python3默认为UTF-8,所以不用设置: #!/usr/bin/python # -*- coding: UTF-8 -*- p ...
- Longhorn 云原生容器分布式存储 - Python Client
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生容器分布式存储 - 设计架构和概念 Longhorn 云原生容器分布式存储 - ...
- 老司机带你体验SYS库多种新玩法
导读 如何更加愉快地利用sys库做一些监控? 快来,跟上老司机,体验sys库的多种新玩法~ MySQL5.7的新特性中,非常突出的特性之一就是sys库,不仅可以通过sys库完成MySQL信息的收集,还 ...
- centos7 修改时间
2021-07-28 查看日志时发现系统时间不正确,故修改时间 # 查看当前系统时间 date # 修改当前系统时间 date -s "2021-7-28 17:03:00" # ...