def paramiko_ssh(): host = "123.56.14.5" port = 22 client = paramiko.SSHClient() client.load_system_host_keys() client.set_missing_host_key_policy(paramiko.client.WarningPolicy()) try: client.connect(host, port, username='root', password='xxx', timeout=30) except Exception as e: print(e) stdin, stdout, stderr = client.exec_command('ls /opt') for line in stdout: print('... ' + line.strip('\n')) client.close() def paramiko_key(): try: k = paramiko.RSAKey.from_private_key_file("~/.ssh/id_rsa") client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname="123.56.14.5", username="root", pkey=k) stdin, stdout, stderr = client.exec_command('ls /opt') for line in stdout: print('... ' + line.strip('\n')) except Exception as e: print(e) finally: client.close()
pexpect代码示例
#!/usr/bin/python
# encoding=utf-8
# Filename: pexpect_test.py
import pexpect
defsshCmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', 'continue connecting(yes/no)?'], timeout=5)
if i == 0:
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password:')
ssh.sendline(passwd)
ssh.sendline(cmd)
r = ssh.read()
print r
ret = 0
except pexpect.EOF:
print "EOF"
ret = -1
except pexpect.TIMEOUT:
print "TIMEOUT"
ret = -2
finally:
ssh.close()
return ret
sshCmd('xxx.xxx.xxx.xxx','xxxxxx','ls /root')
注意:必须要增加client.load_system_host_keys()此句,否则报如下错误:
unbound method missing_host_key() must be called with AutoAddPolicy instance as first argument (got SSHClient instance instead)
#!/usr/bin/python
# encoding=utf-8
# Filename: paramiko_test.py
import datetime
import threading
import paramiko
defsshCmd(ip, username, passwd, cmds):
try:
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.connect(ip, 22, username, passwd, timeout=5)
for cmd in cmds:
stdin, stdout, stderr = client.exec_command(cmd)
lines = stdout.readlines()
# print out
for line in lines:
print line,
print '%s\t 运行完毕\r\n' % (ip)
except Exception, e:
print '%s\t 运行失败,失败原因\r\n%s' % (ip, e)
finally:
client.close()
#上传文件
defuploadFile(ip,username,passwd):
try:
t=paramiko.Transport((ip,22))
t.connect(username=username,password=passwd)
sftp=paramiko.SFTPClient.from_transport(t)
remotepath='/root/main.py'
localpath='/home/data/javawork/pythontest/src/main.py'
sftp.put(localpath,remotepath)
print '上传文件成功'
except Exception, e:
print '%s\t 运行失败,失败原因\r\n%s' % (ip, e)
finally:
t.close()
#下载文件
defdownloadFile(ip,username,passwd):
try:
t=paramiko.Transport((ip,22))
t.connect(username=username,password=passwd)
sftp=paramiko.SFTPClient.from_transport(t)
remotepath='/root/storm-0.9.0.1.zip'
localpath='/home/data/javawork/pythontest/storm.zip'
sftp.get(remotepath,localpath)
print '下载文件成功'
except Exception, e:
print '%s\t 运行失败,失败原因\r\n%s' % (ip, e)
finally:
t.close()
if __name__ == '__main__':
# 需要执行的命令列表
cmds = ['ls /root', 'ifconfig']
# 需要进行远程监控的服务器列表
servers = ['xxx.xxx.xxx.xxx']
username = "root"
passwd = "xxxxxx"
threads = []
print "程序开始运行%s" % datetime.datetime.now()
# 每一台服务器创建一个线程处理
for server in servers:
th = threading.Thread(target=sshCmd, args=(server, username, passwd, cmds))
th.start()
threads.append(th)
# 等待线程运行完毕
for th in threads:
th.join()
print "程序结束运行%s" % datetime.datetime.now()
#测试文件的上传与下载
uploadFile(servers[0],username,passwd)
downloadFile(servers[0],username,passwd)
相关推荐
netmiko, 简化 Paramiko SSH连接至网络设备的多厂商库 Netmiko简化 Paramiko SSH连接至网络设备的多厂商库python 2.7,3.5,3.6需要:Paramiko> = 2scp> = 0.10.0pyyamlpyserialtextfs
Python中的Paramiko库是一个强大的SSH2协议库,它支持加密和认证等功能,使得开发者能够方便地在Python程序中实现远程服务器的自动化管理。本篇文章将详细介绍如何使用Paramiko实现SSH的功能,包括基于用户名和密码...
Python – paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决 1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh ...
文章还提供了具体的操作步骤和脚本示例,帮助理解如何使用paramiko进行远程命令执行,并处理执行超时问题。编写测试脚本,包括一个长时间运行的`test.sh`脚本和一个触发它的`run.sh`脚本。然后,通过paramiko的`test...
3. **连接建立与关闭**:Paramiko可以轻松地建立到远程服务器的SSH连接,支持基于密码、公钥或密钥对的身份验证。连接建立后,可以执行命令、上传/下载文件,甚至转发本地或远程端口。 4. **SFTP支持**:SSH File ...
Paramiko Expect为Paramiko SSH库提供了一个类似于期望的扩展,该脚本库允许脚本通过真正的SSH连接与主机进行完全交互。 该类由SSH客户端对象构造(将来可能会扩展为支持传输,以提供更大的灵活性)。 快速开始 要...
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。 1 基于用户名和密码的 sshclient 方式登录 # 建立一个sshclient对象 ssh = paramiko.SSH...
paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行。 安装paramiko也很简单,我用的...
通过上述示例可以看出,`paramiko`模块为Python提供了一种灵活而强大的方式来实现SSH功能。无论是简单的命令执行还是复杂的文件传输,甚至是更高级的安全认证机制,`paramiko`都能够很好地满足需求。在实际应用中,...
有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。 由于paramiko属于第三方库,所以需要使用如下命令先行安装 2.安装paramiko pip install...
#设置ssh连接的远程主机地址和端口t=paramiko.Transport((ip,port))#设置登录名和密码t.connect(username=username,password=password)#连接成功后打开一个channelchan=t.open_session()#设置会话超时时间chan....
ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname', username='username', password='password') stdin, stdout, stderr = ssh.exec_command('ls -l'...
在Python脚本中,我们可以通过以下简单示例了解如何使用Paramiko进行SSH连接: ```python import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('...
Python作为一个强大的脚本语言,被广泛用于网络管理任务,尤其是通过SSH (Secure Shell) 协议与远程设备进行交互。Paramiko是一个纯Python实现的SSHv2协议库,它提供了客户端和服务器端的功能,使得在Python中进行...
下载paramiko 首先,我的windows系统上有python2和python3。使用下面命令切换到python3: activate py3 接着使用下面命令下载相关模块: pip install ecdsa pip install Crypto ...ssh = paramiko.SSHClient
pyssh连接pyssh-connect软件包提供了用于使用Paramiko执行SSH命令的基本接口。用法import pyssh_connectwith pyssh_connect . ssh_connection ( "host1.example.com" ) as ssh : returncode , output , error = ssh ...
Python中的Paramiko库是一个强大的SSH2协议库,它实现了客户端和服务器端的SSH协议,用于在不同系统之间进行安全的远程命令执行、文件传输等操作。Paramiko这个名字来源于瑞典语“parametrisk”(参数化的),它强调...