赞
踩
这篇文章主要介绍了windows下通过paramiko来登录linux系统并执行命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们来一起学习学习吧!
代码:
- 我是一名python开发工程师,整理了一套python的学习资料,从基础的python脚本到web开发、爬虫、
- 数据分析、数据可视化、机器学习、面试真题等。想要的可以进群:688244617免费领取!
-
- >>> import paramiko
-
- >>> ssh = paramiko.SSHClient()
- >>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- >>> ssh.connect('10.104.6.8',username = 'xiaopeng',password='******')
- >>> cmd = 'cd' #进入用户目录home
- >>> stdin,stdout,stderr = ssh.exec_command(cmd)
- >>> cmd = 'ls >test' #管道,ls命名的输出到文件test里面
- >>> stdin,stdout,stderr = ssh.exec_command(cmd)
- >>> cmd = 'cat test' # 显示test的内容,即ls命名的结果
- >>> stdin,stdout,stderr = ssh.exec_command(cmd)
- >>> print stdout.readlines() #结果 汉字用的字符显示
- ['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登录更加简单。看下面的代码:
- #-*- coding: utf-8 -*-
- #!/usr/bin/python
- import paramiko
- import threading
- def ssh2(ip,username,passwd,cmd):
- try:
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(ip,22,username,passwd,timeout=5)
- for m in cmd:
- stdin, stdout, stderr = ssh.exec_command(m)
- # stdin.write("Y") #简单交互,输入 ‘Y'
- out = stdout.readlines()
- #屏幕输出
- for o in out:
- print o,
- print '%s\tOK\n'%(ip)
- ssh.close()
- except :
- print '%s\tError\n'%(ip)
- if __name__=='__main__':
- cmd = ['cal','echo hello!']#你要执行的命令列表
- username = "" #用户名
- passwd = "" #密码
- threads = [] #多线程
- print "Begin......"
- for i in range(1,254):
- ip = '192.168.1.'+str(i)
- a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
- a.start()
上面的程序还是有些技巧的:
1.利用多线程,同时发出登录请求,同时去连接电脑,这样速度快很多,我试了一下,如果不用多线程,直接一个一个挨着执行的话,大约5~10秒钟才能对一台电脑操作完,具体时间要根据命令的来决定,如果是软件安装或者卸载时间要更长一些。这样下来怎么也要一二十分钟,用多线程后就快多了,所有的命令执行完用了不到2分钟!
2.最好用root用户登录,因为安装或者卸载软件的时候如果用普通用户又会提示输入密码,这样又多了一次交互,处理起来就比较麻烦!安装软件时apt-get install xxx 最好加上“-y”参数,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。