免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1653 | 回复: 9
打印 上一主题 下一主题

文件内容一多 脚本就出错. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-23 17:57 |只看该作者 |倒序浏览
本帖最后由 fllintel 于 2012-07-23 18:03 编辑

是这样的:
有一个文件 iplist 内容格式如下:

  1. IP    password   port
  2. X         XXXX        XX
  3. .
  4. .
  5. .
  6. .
  7. .
  8. .
复制代码
部分代码如下:

  1. def ssh(host,user,password,port,cmd):
  2.     s = pxssh.pxssh()
  3.     s.login(host,user,password,port)
  4.     s.sendline(cmd)
  5.     s.prompt()
  6.     print s.before
  7.     s.logout()

  8. .
  9. .
  10. .
  11. .
  12. f = open(iplist,'r')
  13. for ser in  f.readlines():
  14.         each = ser.split()
  15.         user = "XXX"
  16.         host,password,port = each[0],each[1],each[2]
  17.         cmd = "hostname ......"
  18.         t= threading.Thread(target=ssh,args=(host,user,password,port,cmd))
  19.         t.start()
  20. f.close()
复制代码
就是我用pexpect 中的pxssh 实现登录机器执行命令,  但是当我的iplist 内容有80多行的时候 脚本会出错. 如果只有20行 就没有问题.线程太多了?
如何避免这个问题?
  

论坛徽章:
0
2 [报告]
发表于 2012-07-23 19:07 |只看该作者
回复 1# fllintel

  1. ......
  2. f = open(iplist,'r')
  3. threads=[]
  4. for ser in  f.readlines():
  5.     ......
  6.     t= threading.Thread(target=ssh,args=(host,user,password,port,cmd))
  7.     threads.append(t)
  8.     t.start()
  9. for t in threads:
  10.     t.join()
复制代码
另外不需要host,password,port = each[0],each[1],each[2],直接写host,password,port = each就可以了
   

论坛徽章:
0
3 [报告]
发表于 2012-07-23 20:38 |只看该作者
本帖最后由 fllintel 于 2012-07-23 20:42 编辑

我研究下 先多谢了..

论坛徽章:
0
4 [报告]
发表于 2012-07-23 20:42 |只看该作者
回复 2# 106033177


    我研究下 先多谢了..
对了 2楼 能解释下为何要这样做么? 用了一个队列来防止冲突还是? 我是新手哈,请见谅

论坛徽章:
0
5 [报告]
发表于 2012-07-24 12:19 |只看该作者
回复 4# fllintel


    你最好加上try except,不然连不上或者超时都会中断程序。

论坛徽章:
0
6 [报告]
发表于 2012-07-24 13:58 |只看该作者
回复 2# 106033177


    今天用你的方法试了  还是不行啊~~

论坛徽章:
0
7 [报告]
发表于 2012-07-24 15:35 |只看该作者
本帖最后由 horizonhyg 于 2012-07-24 15:38 编辑

回复 6# fllintel


    看看报什么错,可能是80多行的那个机器连不通或者超时,程序退出了,你加上异常判断就不会有问题了。
  1. try
  2.         p=pxssh.pxssh()
  3.         p.login(...)
  4. except pxssh.ExceptionPxssh,e:
  5.         print "---------------Password error----------------"
  6. except pexpect.TIMEOUT:
  7.         print "----------------TIMEOUT--------------------"
  8. except pexpect.EOF:
  9.         print "-----------------EOF---------------------"
复制代码
自己整理格式

论坛徽章:
0
8 [报告]
发表于 2012-07-24 16:03 |只看该作者
本帖最后由 fllintel 于 2012-07-24 16:05 编辑

回复 7# horizonhyg


    看过了 机器都是连的通的.
错误信息:
  1. Exception in thread Thread-17:
  2. Traceback (most recent call last):
  3.   File "/usr/lib64/python2.4/threading.py", line 442, in __bootstrap
  4.     self.run()
  5.   File "/usr/lib64/python2.4/threading.py", line 422, in run
  6.     self.__target(*self.__args, **self.__kwargs)
复制代码

论坛徽章:
0
9 [报告]
发表于 2012-07-24 22:03 |只看该作者
回复 8# fllintel
把iplist 传上来看一下。

   

论坛徽章:
2
酉鸡
日期:2014-02-19 09:11:08摩羯座
日期:2014-05-23 10:16:16
10 [报告]
发表于 2012-07-27 09:08 |只看该作者
你看下是不是iplist下面格式或数据问题,可能是数据的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP