当前位置:   article > 正文

windows下通过paramiko模块实现ssh登录linux系统并执行命令_用python paramiko 模块 写一个ssh到linux里执行命令的程序

用python paramiko 模块 写一个ssh到linux里执行命令的程序

这篇文章主要介绍了windows下通过paramiko来登录linux系统并执行命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们来一起学习学习吧!

代码:

  1. 我是一名python开发工程师,整理了一套python的学习资料,从基础的python脚本到web开发、爬虫、
  2. 数据分析、数据可视化、机器学习、面试真题等。想要的可以进群:688244617免费领取!
  3. >>> import paramiko
  4. >>> ssh = paramiko.SSHClient()
  5. >>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  6. >>> ssh.connect('10.104.6.8',username = 'xiaopeng',password='******')
  7. >>> cmd = 'cd' #进入用户目录home
  8. >>> stdin,stdout,stderr = ssh.exec_command(cmd)
  9. >>> cmd = 'ls >test' #管道,ls命名的输出到文件test里面
  10. >>> stdin,stdout,stderr = ssh.exec_command(cmd)
  11. >>> cmd = 'cat test' # 显示test的内容,即ls命名的结果
  12. >>> stdin,stdout,stderr = ssh.exec_command(cmd)
  13. >>> print stdout.readlines() #结果 汉字用的字符显示
  14. ['code\n', 'Desktop\n', 'order.cpp\n', 'python\n', 'test\n', '\xe5\x85\xac\xe5\x85\xb1\xe7\x9a\x84\n', '\xe6\xa8\xa1\xe6\x9d\xbf\n', '\xe8\xa7\x86\xe9\xa2\x91\n', '\xe5\x9b\xbe\xe7\x89\x87\n', '\xe6\x96\x87\xe6\xa1\xa3\n', '\xe4\xb8\x8b\xe8\xbd\xbd\n', '\xe9\x9f\xb3\xe4\xb9\x90\n']

这里我们都会发现,使用exec_command('cd dirname')时并不会切换目录,execute_command() 是a single session,每次执行完后都要回到缺省目录。所以可以 .execute_command('cd /var; pwd')。

python里面的paramiko模块,用这个实现ssh登录更加简单。看下面的代码:

  1. #-*- coding: utf-8 -*-
  2. #!/usr/bin/python
  3. import paramiko
  4. import threading
  5. def ssh2(ip,username,passwd,cmd):
  6. try:
  7. ssh = paramiko.SSHClient()
  8. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  9. ssh.connect(ip,22,username,passwd,timeout=5)
  10. for m in cmd:
  11. stdin, stdout, stderr = ssh.exec_command(m)
  12. # stdin.write("Y") #简单交互,输入 ‘Y'
  13. out = stdout.readlines()
  14. #屏幕输出
  15. for o in out:
  16. print o,
  17. print '%s\tOK\n'%(ip)
  18. ssh.close()
  19. except :
  20. print '%s\tError\n'%(ip)
  21. if __name__=='__main__':
  22. cmd = ['cal','echo hello!']#你要执行的命令列表
  23. username = "" #用户名
  24. passwd = "" #密码
  25. threads = [] #多线程
  26. print "Begin......"
  27. for i in range(1,254):
  28. ip = '192.168.1.'+str(i)
  29. a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
  30. a.start()

上面的程序还是有些技巧的:

1.利用多线程,同时发出登录请求,同时去连接电脑,这样速度快很多,我试了一下,如果不用多线程,直接一个一个挨着执行的话,大约5~10秒钟才能对一台电脑操作完,具体时间要根据命令的来决定,如果是软件安装或者卸载时间要更长一些。这样下来怎么也要一二十分钟,用多线程后就快多了,所有的命令执行完用了不到2分钟!

2.最好用root用户登录,因为安装或者卸载软件的时候如果用普通用户又会提示输入密码,这样又多了一次交互,处理起来就比较麻烦!安装软件时apt-get install xxx 最好加上“-y”参数,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/603454
推荐阅读
相关标签
  

闽ICP备14008679号