更新时间:2022-10-14 13:27:12
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是***工具之一。
一、远程连接服务器
方式1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import paramiko
#实例化客户端 ssh = paramiko.SSHClient()
#设置默认授信列表 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 设置连接信息 ssh.connect( hostname = "192.168.10.32" ,
port = 22 ,
username = "root" ,
password = "123456"
) # 输入远程需要执行的命令 stdin,stdout,stderr = ssh.exec_command( "ls" )
#stdin 需要输入的部分
#stdout 返回输出的部分
#stderr 错误部分
print (stdout.read())
ssh.close() |
方式2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#coding:utf-8 import paramiko
trans = paramiko.Transport(( "192.168.10.32" , 22 ))
trans.connect(username = "root" ,password = "123456" )
ssh = paramiko.SSHClient() #实例化一个客户端
ssh._transport = trans #设置客户端使用该通道
shell = ssh.invoke_shell() #实例化一个shell
shell.settimeout( 10 ) #设置超时时间
shell.send( "ls\n" )
while True :
recv = shell.recv( 9999 )
print (recv)
ssh.close() |
二、远程连接服务器创建交互式的shell 终端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
trans = paramiko.Transport(( "192.168.10.32" , 22 ))
trans.connect(username = "root" ,password = "123456" )
#登录前必须实例化一个客户端 ssh = paramiko.SSHClient()
ssh._transport = trans #设置客户端使用该通道
shell = ssh.invoke_shell() #实例化一个shell
shell.settimeout( 0.1 ) #设置超时等待时间
shell.send( raw_input ( ">>>" ) + "\n" )
while True :
try :
recv = shell.recv( 99999 )
if recv:
print (recv)
else :
continue
except :
command = raw_input ( ">>>" )
shell.send(command + "\n" )
if command = = "exit" :
break
ssh.close() |
三 、使用 paramiko 模块上传下载文件
1
2
3
4
5
6
7
8
9
10
11
12
|
#上传文件 trans = paramiko.Transport(( "192.168.10.32" , 22 ))
trans.connect(username = "root" ,password = "123456" )
sftp = paramiko.SFTPClient.from_transport(trans) #实例化一个文件上传下载的客户端
下载文件 将服务器的文件下载到本地 sftp.get( "/root/11.py" , "aa.py" ) # 服务器路径 ,本地路径
trans.close() 上传文件文件 将本地文件上传到服务器上 sftp.put( "404.html" , "/root/404.html" ) 本地路径 ,服务器路径
|