paramiko远程上传下载文件

import paramiko
import sys


user = "root"
pwd = "123456"



# 上传文件
def sftp_upload_file(server_path, local_path):
    try:
        t = paramiko.Transport((ip, 22))
        t.connect(username=user, password=pwd)
        sftp = paramiko.SFTPClient.from_transport(t)
        sftp.put(local_path, server_path)
        t.close()
    except Exception as  e:
        print(e)

# 下载文件
def sftp_down_file(server_path, local_path):
    try:
        t = paramiko.Transport((ip, 22))
        t.connect(username=user, password=pwd)
        sftp = paramiko.SFTPClient.from_transport(t)
        sftp.get(server_path, local_path)
        t.close()
    except Exception as e:
        print(e)

# 连接
def ssh_conn(ip, cmd):

    ssh = paramiko.SSHClient()
    # 允许连接不在known_hosts文件上的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(ip, 22, user, pwd)
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command(cmd)
    # 获取结果
    print(10 * "-", 'start', 10 * "-")
    for line in stdout:
        res=(line.strip('\n').split())
        print(res)
    else:
        print(stdout)
    print(10 * "-", 'end', 10 * "-")

def menu():
    print('''
    * - - - - - - - - - - - - - - - - - *     
                   菜单                     
                1>上传文件                 
                2>下载文件
                3>执行命令
                4>退出
    * - - - - - - - - - - - - - - - - - *
    ''')

    choice = int(input('请输入你要执行的操作:\n'))
    if choice == 1:
        src = input('请输入原路径:\n')
        dest = input('请输入目标路径:\n')
        sftp_upload_file(src, dest)
    elif choice == 2:
        src = input('请输入原路径:\n')
        dest = input('请输入目标路径:\n')
        sftp_down_file(src, dest)
    elif choice == 3:
        while True:
            cmd = input('请输入要执行的命令:\n')
            if cmd == 'eixt':
                sys.exit()
            ssh_conn(ip, cmd)
    else:
        sys.exit()


if __name__ == '__main__':
    ip = input('请输入目标ip:\n')
    while True:
        menu()

 

转载于:https://www.cnblogs.com/ray-mmss/p/10619220.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值