windows下可以通过putty以ssh方式连接linux主机,但是实际使用putty会被乱码困扰。
在这里利用python,小试牛刀,写一个能利用ssh协议访问服务器的例子。
1.扩展模块:
需要从网上下载这三个扩展模块:
PyCrypto下载地址:https://www.dlitz.net/software/pycrypto/
paramiko下载地址:http://www.lag.net/paramiko/
edssa下载地址:https://pypi.python.org/pypi/ecdsa/0.9
上面有些软件可能需要用svn客户端进行下载比较方便,因为放在了github 托管了
不过很可惜 我上面那个地址下载的PyCrypto折腾半天,可能是我windows 7 x64位系统的原因,没有成功
最后是在http://www.voidspace.org.uk/downloads/pycrypto26/这个地方找到了相应的exe文件,安装成功了,PyCrypto挺重要,因为只有安装成功pycrypto,才能安装好paramiko。
这些顺利完成后,用import paramiko试试,可以说明安装成功了。
至于代码其实也是在网上找来的,测试一下
#-*- 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()