普通版本

 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. 数据集转换为Json

    数据集转换为Json 第一步:新建一个类对象  通常我会写三个属性:状态.返回信息.数据集 第二步:新建一个JSON转换类 第三步:把类对象当做参数传入JSON转换类 ———————————————— ...

  2. React Native之FlexBox介绍和使用

    # 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...

  3. 使用adjacent_difference要注意的小问题

    adjacent_difference的源与目的地可以相同,这是在标准中说明的,所以我产生了疑问,会不会因为这样使用而改变了当前成员,而影响下一步计算呢,经试验,在vs2015里并不会. #inclu ...

  4. lambda表达式-转载

    来源:http://www.cnblogs.com/knowledgesea/p/3163725.html   前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸夸 ...

  5. ComboBox(下拉列表框)实现省、市、县三级联动,用hibernate连接数据库

    package com.hanqi.web; import java.io.IOException; import java.util.List; import javax.servlet.Servl ...

  6. .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(三)

    阅读目录: 7.HtmlHelper.HtmlHelper<T>中的ViewModel的类型推断 8.控制ViewModel中的某个属性的呈现(使用PartialView部分视图细粒度控制 ...

  7. linux ssh和scp实例

    ssh 192.160.1.100 -p 40012 scp user 192.169.72.2:/ scp -i /id_rsa -P40027 root@221.212.235.17:/sdzw/ ...

  8. CPU 和内存虚拟化原理 - 每天5分钟玩转 OpenStack(6)

    前面我们成功地把 KVM 跑起来了,有了些感性认识,这个对于初学者非常重要.不过还不够,我们多少得了解一些 KVM 的实现机制,这对以后的工作会有帮助. CPU 虚拟化 KVM 的虚拟化是需要 CPU ...

  9. Invalid layout param in a LinarLayout: layout_weight

    android:layout_weight只适用于线性布局LinearLayout,不适用于相对布局RelativeLayout.

  10. C#如何使用Soap协议调用WebService?

    WebService是什么?它的作用? WebService是一个平台独立.低耦合的.自包含的.基于可编程的可使用xml描述.调用的web应用程序,用于开发分布式的交互式的应用程序. Soap是什么? ...