博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
paramiko 模块远程管理 liunx 服务器
阅读量:6430 次
发布时间:2019-06-23

本文共 2076 字,大约阅读时间需要 6 分钟。

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,如需转载请自行联系原作者
你可能感兴趣的文章
用Python制作迷宫GIF
查看>>
支付宝推出基于区块链跨境支付,巨头入场小企业将面临灭顶之灾
查看>>
从事互联网行业,怎样才能快速掌握一门编程语言呢?
查看>>
谈谈fail-fast与fail-safe是什么以及工作机制
查看>>
深入浅出换肤相关技术以及如何实现
查看>>
Redis 基础、高级特性与性能调优
查看>>
React native 第三方组件 React native swiper
查看>>
接口幂等设计
查看>>
编程入门指南
查看>>
移动端的自适应方案—REM
查看>>
你真的懂volatile吗
查看>>
Android 编译时注解-提升
查看>>
说说 Spring AOP 中 @Aspect 的高级用法
查看>>
Workbox CLI中文版
查看>>
贝聊亿级数据库分库分表实践
查看>>
同时连接gitlab和github
查看>>
vuex源码分析
查看>>
tornado+datatables分页
查看>>
集成 Kubernetes 与 Cloud Foundry,IBM自有一套
查看>>
php 中英文字符分割
查看>>