资讯专栏INFORMATION COLUMN

使用python-pexpect登录linux系统并发送命令

lijy91 / 1791人阅读

</>复制代码

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. # filename: pexpect_test.py
  4. import pexpect,time,sys
  5. def sendCommt():
  6. demo = open("result.txt", "ab")
  7. demo.write("==========Log Tile: demo==========
  8. ")
  9. print user
  10. child = pexpect.spawn("ssh %s@%s" % (user,ip))
  11. while True:
  12. i = child.expect(patterns)
  13. if i == CONTINUES:
  14. child.sendline(flag)
  15. elif i == PASSWD:
  16. child.sendline(passwd)
  17. elif i == OPFLAG:
  18. break
  19. for cmd in cmds:
  20. time.sleep(2)
  21. p = pexpect.spawn(cmd)
  22. p.logfile = demo
  23. p.write("=====================
  24. ")
  25. p.expect(pexpect.EOF)
  26. print cmd
  27. demo.close()
  28. child.close()
  29. if __name__ == "__main__":
  30. user = "demo"
  31. ip = "x.x.x.x"
  32. passwd = "1"
  33. cmds = ["ps","ls","pwd","ifconfig","date"]
  34. patterns = ["Are you sure you want to continue connecting (yes/no)?","[Pp]assword:","#"]
  35. CONTINUES,PASSWD,OPFLAG = range(len(patterns))
  36. flag = "yes"
  37. group = "1"
  38. try:
  39. sendCommt()
  40. except pexpect.TIMEOUT:
  41. print "TIMEOUT"
  42. except pexpect.EOF:
  43. print "EOF"

参考文档:
http://www.ibm.com/developerworks/cn/lin...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37855.html

相关文章

  • linux文件系统和日志分析

    摘要:通常情况下不需要关注单个的大小,而是需要重点关注的总数,的总字节在格式化的时候就给定了,执行命令即可查看每个硬盘分区对应的总数和已经使用的数量。 inode和block概述一:1、文件数据包括源信息与实际数据文件存储在硬盘上,硬盘最小存储单位是扇区。每个扇区存储512字节block (块):连续的八个扇区组成一...

    waruqi 评论0 收藏0

发表评论

0条评论

lijy91

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<