因此,在最近进行故障排除时,我的python环境发生了一些变化。我的印象是我拥有一切回归权利,但情况可能并非总是如此。 我的fab命令似乎都失败了,包括非常简单的测试。这似乎是使用paramiko进行密钥处理/用户自动回退的问题。
例如,使用这个相对简单的例子:
#!/usr/bin/env python
from fabric.api import *
from fabric import exceptions
import paramiko
from sys import argv
import re
import os
import getpass
import logging
logging.basicConfig(level=logging.DEBUG)
failed_hosts = {}
def run_command(Command):
try:
# print_env('run_command', Command)
# print_transport()
output = run(Command, shell = False)
return output
except exceptions.NetworkError as e:
print "Error encountered for %s: %s" % (env.host_string, e)
failed_hosts[env.host_string] = e
def test_ver():
result=run_command('sh ver')
print result
我明白了:
ca-cmacnevi-mac:~christian.macnevin $ fab -f fabtest.py test_ver -u admin找不到主机。请指定(单个)主机字符串 连接:cisco_switch [cisco_switch]运行:sh ver DEBUG:paramiko.transport:启动线程(客户端模式):0x3d9da90L DEBUG:paramiko.transport:本地版本/ idstring: SSH-2.0-paramiko_1.17.2 DEBUG:paramiko.transport:Remote version / idstring:SSH-2.0-Cisco-1.25 INFO:paramiko.transport:已连接 (版本2.0,客户端Cisco-1.25)DEBUG:paramiko.transport:kex algos:[u' diffie-hellman-group1-sha1']服务器密钥:[u' ssh-rsa']客户端 加密:[u' aes128-cbc',u' 3des-cbc',u' aes192-cbc',u' aes256-cbc'] 服务器加密:[u' aes128-cbc',u' 3des-cbc',u' aes192-cbc', u' aes256-cbc']客户端mac:[u' hmac-sha1',u' hmac-sha1-96',u' hmac-md5', u' hmac-md5-96']服务器mac:[u' hmac-sha1',u' hmac-sha1-96', u' hmac-md5',u' hmac-md5-96']客户端压缩:[u' none']服务器 压缩:[u' none']客户端:[u']服务器lang:[u''] kex 关注?False DEBUG:paramiko.transport:Kex同意: diffie-hellman-group1-sha1 DEBUG:paramiko.transport:Cipher同意: aes128-cbc DEBUG:paramiko.transport:MAC同意:hmac-md5 DEBUG:paramiko.transport:压缩同意:没有 DEBUG:paramiko.transport:kex引擎KexGroup1指定了hash_algo DEBUG:paramiko.transport:切换到 新密钥... DEBUG:paramiko.transport:尝试使用SSH代理密钥 d0f5d22e756685a3640d3a24ec18bb6c DEBUG:paramiko.transport:userauth is OK DEBUG:paramiko.transport:身份验证类型(公钥)不是 允许的。 DEBUG:paramiko.transport:允许的方法:[u'密码'] [cisco_switch]私钥密码: DEBUG:paramiko.transport:启动线程(客户端模式):0x3dc6e50L DEBUG:paramiko.transport:本地版本/ idstring: SSH-2.0-paramiko_1.17.2 DEBUG:paramiko.transport:Remote version / idstring:SSH-2.0-Cisco-1.25 INFO:paramiko.transport:已连接 (版本2.0,客户端Cisco-1.25)DEBUG:paramiko.transport:kex algos:[u' diffie-hellman-group1-sha1']服务器密钥:[u' ssh-rsa']客户端 加密:[u' aes128-cbc',u' 3des-cbc',u' aes192-cbc',u' aes256-cbc'] 服务器加密:[u' aes128-cbc',u' 3des-cbc',u' aes192-cbc', u' aes256-cbc']客户端mac:[u' hmac-sha1',u' hmac-sha1-96',u' hmac-md5', u' hmac-md5-96']服务器mac:[u' hmac-sha1',u' hmac-sha1-96', u' hmac-md5',u' hmac-md5-96']客户端压缩:[u' none']服务器 压缩:[u' none']客户端:[u']服务器lang:[u''] kex 关注?False DEBUG:paramiko.transport:Kex同意: diffie-hellman-group1-sha1 DEBUG:paramiko.transport:Cipher同意: aes128-cbc DEBUG:paramiko.transport:MAC同意:hmac-md5 DEBUG:paramiko.transport:压缩同意:没有 DEBUG:paramiko.transport:kex引擎KexGroup1指定了hash_algo DEBUG:paramiko.transport:切换到 新密钥... DEBUG:paramiko.transport:尝试使用SSH代理密钥 d0f5d22e756685a3640d3a24ec18bb6c DEBUG:paramiko.transport:userauth is OK DEBUG:paramiko.transport:身份验证类型(公钥)不是 允许的。 DEBUG:paramiko.transport:允许的方法:[u'密码'] DEBUG:paramiko.transport:尝试发现密钥 d014d32e356785aa628d3aa44cd6b265 in /Users/christian.macnevin/.ssh/id_rsa 信息:paramiko.transport:断开连接(代码2):协议错误:预期 数据包类型50,得到5 cisco_switch遇到错误:没有存在 session DEBUG:paramiko.transport:传输线程中的EOF无
完成。
我已经看到一些建议,建议设置paramiko' look_for_keys'为假,但要么是错了,要么没有帮助。这一切似乎在几天前都很好用,所以我怀疑还有别的东西在玩。
相关:
fab --version 面料1.12.0 帕拉米科1.17.2
python --version Python 2.7.12
答案 0 :(得分:0)
最后,更多的卸载并重新安装和重新启动就可以了。简而言之,似乎paramiko处于不良状态,系统的基本故障排除修复了一些问题。谢谢你的建议!