普通版本

 1 # -*- coding:utf-8 -*-
import paramiko,os,sys,time port = 22
user = 'root'
def ssh_scp_put(ip,port,user,password,local_file,remote_file):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, 22, 'root', password)
a = ssh.exec_command('date')
stdin, stdout, stderr = a
print stdout.read()
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
sftp = ssh.open_sftp()
sftp.put(local_file, remote_file) def ssh_scp_get(ip, port, user, password, remote_file, local_file):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, 22, 'root', password)
a = ssh.exec_command('date')
stdin, stdout, stderr = a
print stdout.read()
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
sftp = ssh.open_sftp()
sftp.get(remote_file, local_file) ip = raw_input("请输入远端主机的IP地址:")
password = raw_input("请输入远端主机的密码:") while True:
print '''
-------欢迎使用 scp software--------
上传文件请输入 [ 1 ]:
下载文件请输入 [ 2 ]:
退出SCP请输入 [ q ]:
------------------------------------
'''
choice = raw_input("请输入 [ ]")
if choice == "":
local_file = raw_input("请输入本地文件的绝对路径:")
remote_file = raw_input("请输入文件上传的绝对路径:")
ssh_scp_put(ip,port,user,password,local_file,remote_file)
elif choice == "":
remote_file = raw_input("请输入远端文件的绝对路径:")
local_file = raw_input("请输入要放到本地的绝对路径:")
ssh_scp_get(ip,port,user,password,remote_file,local_file)
elif choice == "q":
print "感谢使用,再见"
exit()
else:
print "输入错误,请重新输入:"

装逼版本

 import paramiko
import os
import sys
import getpass
print("\033[32;1m****开始配置目标机器信息*****\033[0m")
#ips = input("主机IP:")
#user = input("主机账号:")
#password = getpass.getpass("主机密码:")
#port = 22
user = "root"
ips = "10.10.123.96"
password = "B^Dc%4LSBvhZZK3B"
port = 22
class Tools(object):
def __init__(self, user, password, port, ips):
self.user = user
self.password = password
self.port = port
self.ip = ips
def connect(self):
try:
self.ssh = paramiko.SSHClient()
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh.connect(self.ip, self.port, self.user, self.password)
print("连接已建立")
except Exception as e:
print("未能连接到主机")
def cmd(self):
cmd = input("请输入要执行的命令:>>")
stdout, stdin, stderr = self.ssh.exec_command(cmd)
#print(sys.stdout.read())
def input(self):
self.local_file_abs = input("本地文件的绝对路径:>>")
self.remote_file_abs = input("远程文件的绝对路径:>>")
def put(self):
sftp = paramiko.SFTPClient.from_transport(self.ssh.get_transport())
sftp = self.ssh.open_sftp()
self.input()
sftp.put(self.local_file_abs,self.remote_file_abs)
def get(self):
sftp = paramiko.SFTPClient.from_transport(self.ssh.get_transport())
sftp = self.ssh.open_sftp()
self.input()
sftp.get(self.remote_file_abs,self.local_file_abs)
def close(self):
self.ssh.close()
print("连接关闭")
obj = Tools(user, password, port, ips)
if __name__ == "__main__":
msg = '''\033[32;1m
执行命令 >>输入cmd
上传文件 >>输入put
下载文件 >>输入get
退出 >>输入q\033[0m
'''
getattr(obj, "connect")()
while True:
print(msg)
inp = input("action:>>")
if hasattr(obj,inp):
getattr(obj,inp)()
if inp == "q":
getattr(obj,"close")()
exit()
else:print("没有该选项,请重新输入:>>")

python脚本实现scp上传下载功能的更多相关文章

  1. Python 基于Python实现Ftp文件上传,下载

    基于Python实现Ftp文件上传,下载   by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...

  2. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  3. 【转】Android 服务器之SFTP服务器上传下载功能

    原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...

  4. python之实现ftp上传下载代码(含错误处理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...

  5. 【转】Android 服务器之SFTP服务器上传下载功能 -- 不错

    原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...

  6. JavaWeb实现文件上传下载功能实例解析 (好用)

    转: JavaWeb实现文件上传下载功能实例解析 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web ...

  7. mac电脑终端使用scp上传/下载文件/文件夹

    1.从服务器下载文件到本地电脑 1 scp -r remote_username@remote_ip:remote_folder local_folder 例如: 1 scp -r root@106. ...

  8. php实现文件上传下载功能小结

    文件的上传与下载是项目中必不可少的模块,也是php最基础的模块之一,大多数php框架中都封装了关于上传和下载的功能,不过对于原生的上传下载还是需要了解一下的.基本思路是通过form表单post方式实现 ...

  9. python paramiko实现ssh上传下载执行命令

    paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...

随机推荐

  1. iOS多线程之2.NSThread的加锁@synchronized

    我在上一篇文章讲了线程的生命周期,这篇文章来讲讲线程加锁的注意事项与@synchronized关键字.   那什么时候需要加锁呢,就是当多条线程同时操作一个变量时,就需要加锁了.至于为什么要加锁,可以 ...

  2. Android系统的五种数据存储形式(二)

    之前介绍了Android系统下三种数据存储形式,今天补充介绍另外两种,分别是内容提供者和网络存储.有些人可能认为内存提供者和网络存储更偏向于对数据的操作而不是数据的存储,但这两种方式确实与数据有关,所 ...

  3. SqlServer--代码创建约束

    约束-保证数据完整性先用设计器创建约束,再用代码创建约束.数据库约束是为了保证数据的完整性(正确性)而实现的一套机制非空约束 (选择复选框)not null主键约束(PK)primary key co ...

  4. I2C基础知识

    常识 两条总线线路:串行数据总线SDA,串行时钟总线SCL 每个连接到总线的器件都有唯一的地址供其他设备寻址 每个连接到总线的器件都可以作为发送器和接收器 是多主机总线,如果两个或更多主机同时初始化, ...

  5. Python字符串str的方法使用

    #!usr/bin/env python# -*-coding:utf-8-*-#字符串通常用双引号或单引号来表示:'123',"abc","字符串"#str字 ...

  6. 锐捷与Vmare网络冲突解决办法

    首先,禁用掉VMare的两个适配器,然后在我的电脑右键管理中找到服务,把VMare的所有服务开起来,并把手动改成自动,最后把VMare的网络设置设置为NAT连接即可.

  7. Android 通过 Intent 传递类对象或list对象

    (转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...

  8. ubuntu下怎么给普通用户赋予sudo权限

    ununtu系统安装过程中,系统会提示建立一个默认用户,比如用户名为:zhuhui.这个默认用户具有一定的管理功能,即可以通过sudo命令执行root权限的操作.由于Ubuntu系统默认不允许通过ro ...

  9. ELF Format 笔记(十五)—— 符号哈希表

    ilocker:关注 Android 安全(新手) QQ: 2597294287 符号哈希表用于支援符号表的访问,能够提高符号搜索速度. 下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范. ...

  10. 利用httpd对tomcat进行负载均衡配置

    实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:jdk-8u60-linux-x64 ...