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.pysftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_pathsftp.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.pysftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_pathsftp.get('remove_path', 'local_path')
transport.close() |