Python的paramiko模块ssh操作
2024-10-20 11:47:58
SSHClient
用于连接远程服务器并执行基本命令
基于用户名密码连接:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname = 'c1.salt.com' , port = 22 , username = 'wupeiqi' , password = '123' ) # 执行命令 stdin, stdout, stderr = ssh.exec_command( 'df' ) # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close() |
基于公钥密钥连接:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import paramiko private_key = paramiko.RSAKey.from_private_key_file( '/home/auto/.ssh/id_rsa' ) # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname = 'c1.salt.com' , port = 22 , username = 'wupeiqi' , key = private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command( 'df' ) # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close() |
SFTPClient
用于连接远程服务器并执行上传下载
基于用户名密码上传下载
1
2
3
4
5
6
7
8
9
10
11
12
|
import paramiko transport = paramiko.Transport(( 'hostname' , 22 )) transport.connect(username = 'wupeiqi' ,password = '123' ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put( '/tmp/location.py' , '/tmp/test.py' ) # 将remove_path 下载到本地 local_path sftp.get( 'remove_path' , 'local_path' ) transport.close() |
基于公钥密钥上传下载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import paramiko private_key = paramiko.RSAKey.from_private_key_file( '/home/auto/.ssh/id_rsa' ) transport = paramiko.Transport(( 'hostname' , 22 )) transport.connect(username = 'wupeiqi' , pkey = private_key ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put( '/tmp/location.py' , '/tmp/test.py' ) # 将remove_path 下载到本地 local_path sftp.get( 'remove_path' , 'local_path' ) transport.close() |
最新文章
- FlashFXP|FTP
- limit 百万级数据分页优化方法
- 解决libcrypto.so.0.9.8: cannot open shared object file
- vmware时间不同步的问题
- SQLServer表变量对IO及内存影响测试
- C++第三篇--程序结构
- Django—模板渲染
- myBatis源码之BatchExecutor
- 【导航】Python相关
- (四)esp8266 MDNS域名服务
- SDOI2017 Round2 详细题解
- static_cast 使用
- Java volatile 有什么作用
- MyEclipse教程:使用UML创建模块库——第二部分(一)
- 网络与多线程---OC中多线程使用方法(一)
- System.Diagnostics.Debug和System.Diagnostics.Trace
- python 读写二进制文件实例
- testng入门教程10 TestNG参数化测试
- redis压力测试工具-----redis-benchmark
- 在C#中判断某个类是否实现了某个接口