paramiko模块


paramiko 是堡垒机核心的环节

  • 基于密码实现ssh
  • 基于密钥实现ssh
  • 基于密码实现ftp
  • 基于密钥实现ftp

基于密码实现ssh

import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()

# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
ssh.connect(hostname='192.168.1.101', port=57522, username='root', password='M5EdjP565GPF7hgf')

# 执行命令
while True:
    cmd = input('>>> ')
    stdin, stdout, stderr = ssh.exec_command(cmd)

    # 获取命令结果
    if not stdout:
        print(stderr.read().decode())
    else:
        print(stdout.read().decode())

# 关闭连接
ssh.close()

 

基于密钥实现ssh

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.1.100', port=57522, username='root', pkey=private_key)

while True:
    # 执行命令
    cmd = input('>>> ')
    stdin, stdout, stderr = ssh.exec_command(cmd)
    # 获取命令结果
    if not stdout:
        print(stderr.read().decode())
    else:
        print(stdout.read().decode())

# 关闭连接
ssh.close()

 

基于密码实现简单FTP功能

import paramiko

transport = paramiko.Transport(('192.168.1.101', 57522))
transport.connect(username='root', password='M5EdjP565GPF7hgf')

sftp = paramiko.SFTPClient.from_transport(transport)

# 将location.py 上传至服务器 /tmp/test.py
#sftp.put('C:\\Users\\cuix\\PycharmProjects\\old_boy\\day09\\paramiko_mod\\location.py', '/tmp/test.py')

# 将/tmpremove_path/test.py 下载到本地 local_path (下面是windows的路径)
sftp.get('/tmp/remove_path/test.py', 'C:\\Users\\cuix\\PycharmProjects\\old_boy\\day09\\paramiko_mod\\test.py)

transport.close()

 

基于密钥实现简单FTP功能

import paramiko

# 指定私钥文件路径
private_key = paramiko.RSAKey.from_private_key_file('id_rsa')

# 创建连接主机
transport = paramiko.Transport((192.168.101', 57522))

# 创建认证
transport.connect(username='root', pkey=private_key)

# 连接主机
sftp = paramiko.SFTPClient.from_transport(transport)

# 将location.py 上传至服务器 /tmp/test.py
# sftp.put('C:\\Users\\cuix\\PycharmProjects\\old_boy\\day09\\paramiko_mod\\id_rsa', '/root/test.123')

# 将remove_path 下载到本地 local_path
sftp.get('/tmp/remove_path/test.py', 'C:\\Users\\cuix\\PycharmProjects\\old_boy\\day09\\paramiko_mod\\test.py')

transport.close()

 

posted on 2017-05-10 10:00  奋斗德路  阅读(144)  评论(0)    收藏  举报