且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

paramiko 模块远程管理 liunx 服务器

更新时间: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") 本地路径 ,服务器路径




本文转自 水滴石川1 51CTO博客,原文链接:http://blog.51cto.com/sdsca/2046146,如需转载请自行联系原作者