1.1、基于用户名和密码连接
- 通过paramiko模块连接linux,并执行命令返回结果
#-*- coding:utf-8 -*-
# Author: li Shang
import paramiko
ssh = paramiko.SSHClient() # 创建SSH对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在know_hosts文件中的主机
ssh.connect(hostname='192.168.21.131', port=22, username='root', password='cine123456') # 连接服务器
stdin, stdout, stderr = ssh.exec_command('df') # 执行命令
res,err = stdout.read(),stderr.read() # 获取命令结果
result = res if res else err # 三元运算
print(result.decode())
ssh.close() # 关闭连接
#-*- coding:utf-8 -*-
# Author: li Shang
import paramiko
transport = paramiko.Transport(( '192.168.21.131', 22 ))
transport.connect(username='root', password='cine123456')
sftp = paramiko.SFTPClient.from_transport(transport)
# ssh_client.py 上传至服务器 /tmp/test.py
sftp.put('D:\Python3.7.4\项目1\day15\ssh_client.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('/tmp/ks-script-WQTD7c.log', '111.log')
transport.close()
1.2、基于公钥秘钥连接
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.21.131', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode())
# 关闭连接
ssh.close()
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('id_rsa')
transport = paramiko.Transport(('192.168.21.131', 22))
transport.connect(username='root', 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()