• 不加sleep(0.5)会出现SSHException: Invalid requirement, parse error at " '' "问题,原因暂时未知。

  • 结论如下

  1. 如果不使用多线程,则不会出现问题
  2. 使用多线程一定要sleep(0.2),也就是多个线程之间一定要有时间间隙
#!/usr/bin/env python
import paramiko
import threading
import sys
import time def ssh(host, user, cmd):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
pkey_file = '/Users/admin/.ssh/id_rsa'
# key = paramiko.RSAKey.from_private_key_file( pkey_file, password='' )
key = paramiko.RSAKey.from_private_key_file( pkey_file, password='' )
try:
ssh.connect( hostname=host, username=user, pkey=key, timeout=5 )
except:
print 'connection has some problems...'
return -1
stdin, stdout, stderr = ssh.exec_command( cmd )
stdout = stdout.read()
stderr = stderr.read()
if stdout:
print '%s: %s' % (host, stdout),
ssh.close()
else:
print '%s: %s' % (host, stderr),
ssh.close()
if __name__ == '__main__':
hosts = ['192.168.31.114', '192.168.31.115', '192.168.31.116', '192.168.31.117']
try:
cmd = sys.argv[1]
except IndexError:
print '%s follow a command must be' % __file__
sys.exit(-1)
for host in hosts:
t = threading.Thread( target=ssh, args=(host, 'root', 'uptime') )
t.start()
time.sleep(0.5) #如果不加此行则会出现下面描述的异常
# ssh(host, 'root', 'uptime')

执行结果如下,有时候就没有异常,有时候就有 ,我网在也找不到合适的结论

192.168.31.116:  11:51:53 up  1:03,  1 user,  load average: 0.07, 0.26, 0.18
192.168.31.114: 11:51:53 up 1:03, 1 user, load average: 0.07, 0.26, 0.18
192.168.31.115: 11:51:53 up 1:03, 1 user, load average: 0.07, 0.26, 0.18
Exception in thread Thread-3:
Traceback (most recent call last):
File "/Users/admin/.pyenv/versions/2.7.13/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/Users/admin/.pyenv/versions/2.7.13/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "parallel.py", line 12, in ssh
key = paramiko.RSAKey.from_private_key_file( pkey_file, password='' )
File "/Users/admin/.pyenv/versions/2.7.13/lib/python2.7/site-packages/paramiko/pkey.py", line 196, in from_private_key_file
key = cls(filename=filename, password=password)
File "/Users/admin/.pyenv/versions/2.7.13/lib/python2.7/site-packages/paramiko/rsakey.py", line 46, in __init__
self._from_private_key_file(filename, password)
File "/Users/admin/.pyenv/versions/2.7.13/lib/python2.7/site-packages/paramiko/rsakey.py", line 174, in _from_private_key_file
self._decode_key(data)
File "/Users/admin/.pyenv/versions/2.7.13/lib/python2.7/site-packages/paramiko/rsakey.py", line 186, in _decode_key
raise SSHException(str(e))
SSHException: Invalid requirement, parse error at "''"
192.168.31.117: 11:51:54 up 1:03, 1 user, load average: 0.07, 0.25, 0.18
192.168.31.115: 11:51:54 up 1:03, 1 user, load average: 0.07, 0.25, 0.18
192.168.31.114: 11:51:54 up 1:03, 1 user, load average: 0.07, 0.25, 0.18
192.168.31.115: 11:51:55 up 1:03, 1 user, load average: 0.07, 0.25, 0.18
192.168.31.116: 11:51:55 up 1:03, 1 user, load average: 0.07, 0.25, 0.18
192.168.31.114: 11:51:55 up 1:03, 1 user, load average: 0.07, 0.25, 0.18
192.168.31.117: 11:51:55 up 1:03, 1 user, load average: 0.07, 0.25, 0.18

python_paramiko_SSHException Invalid requirement, parse error at的更多相关文章

  1. 【Problems】:JSON parse error: Invalid UTF-8 start byte 0xbd;

    简单记录一下 ,我本地开发环境这样写测试时没有问题, @ApiOperation(value="取消关注") @PostMapping("cancelFollow&quo ...

  2. Parse error: syntax error, unexpected T_PUBLIC in 问题解决

    class 类中 public function _getInfo($sn){        $title = '';        $_array = explode('~', $sn);      ...

  3. vxworks一个超级奇怪的错误(parse error before `char')

    void tserver(int id) { if(debug){ useResource(,id);} char msgBuf[MAX_MSG_LEN]; if (msgQReceive(myMsg ...

  4. 使用Parse内付费服务出现的Error Domain=Parse Code=146 "The operation couldn’t be completed. (Parse error 146.)

    因为开发一个应用有个内付费去广告功能,介于苹果官方提供的方法没用过,感觉有些复杂,于是选用了第三方组件Parse来解决这个问题,简单易操作: Parse简化苹果官方内付费问题,使用方法分厂简单只有两个 ...

  5. 解决:sudo: parse error in /etc/sudoers near line 24 ...报错

    ubuntu系统下由于添加用户权限的时候直接用的vim对 /etc/sudoers 文件编辑,保存退出的时候,再使用sudo su 等等命令一直报错如下: sudo: parse error in / ...

  6. [ExtJS5学习笔记]第二十七节 CMD打包错误 Error C2009: YUI Parse Error (identifier is a reserved word => debugger;)

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/41242993 本文作者:sushengmiyan ------------------ ...

  7. 与非java语言使用RSA加解密遇到的问题:algid parse error, not a sequence

    遇到的问题 在一个与Ruby语言对接的项目中,决定使用RSA算法来作为数据传输的加密与签名算法.但是,在使用Ruby生成后给我的私钥时,却发生了异常:IOException: algid parse ...

  8. ORA-00984: 列在此处不允许 SQL parse error location

      ORA-00984: 列在此处不允许SQL parse error location Oracle 插入数据的时候一直提示列在此处不允许.网上搜索答案说是类型不匹配的多,但我的错误确是一个低级错误 ...

  9. 【开发遇到的问题】Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(JSON parse error: Can not deserialize value of type java.util.Date from String[)

    1.问题排查 - 项目配置 springboot 2.1 maven配置jackson - 出现的场景: 服务端通过springmvc写了一个对外的接口,查询数据中的表,表中有一个字段属性是时间戳,返 ...

随机推荐

  1. ndk http://www.th7.cn/Program/Android/201412/334955.shtml

    http://www.th7.cn/Program/Android/201412/334955.shtml http://ruikye.com/2014/08/30/androidstudio_ndk ...

  2. 2018/03/28 每日一个Linux命令 之 mkdir/rmdir

    用于建立空文件夹和删除文件夹 -- 两命令重要参数 -p 递归建立/删除 -- 例如 mkdir -p demo1/demo2/demo3 建立demo3空文件夹,如果demo1/demo2没建立也建 ...

  3. mysql 权限管理 revoke 回收权限 命令

    回收所有库,所有表的所有权限 revoke all on *.* from 针对mike的账号 回收 所有库,所有表的select权限 mysql> revoke select on *.* f ...

  4. memcached-session-manager 教程实现session共享

    1简单介绍     1.1决定用什么序列化策略.     1.2配置tomcat         1.2.1加入 memcached-session-manager jar 包到tomcat中.    ...

  5. 【剑指offer】包含min函数的栈

    一.题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数. 二.思路: 无,Z(zhi)Z(zhang)式操作. 三.代码:    

  6. 在vue init webpack my-project卡住的问题

    在安装完node.js后,也用cnpm代替了npm,然后使用cnpm在node.js的安装路径下安装了vue-cli:cnpm install --global vue-cli.然后使用vue ini ...

  7. break continue练习

    break :跳出 1.当break单独存在时,下面不要定义其他语句,因为执行不到. 2.如果出现了循环嵌套,break响应跳出指定的循环,可以通过标号来完成 例如: continue:要么是swit ...

  8. mysql 常用命令 常用SQL语句

    维护命令 数据库 ##创建数据库 mysql> create database test; Query OK, 1 row affected ##删除数据库 mysql> drop dat ...

  9. [LeetCode] 38. Count and Say_Easy

    The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 1 ...

  10. 处理hash冲突

    “处理冲突” 的实际含义是: 为产生冲突的地址寻找下一个哈希地址. 1. 开放定址法 2. 链地址法 ------------------------------------------------- ...