python脚本实现scp上传下载功能
普通版本 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上传下载功能的更多相关文章
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- 【转】Android 服务器之SFTP服务器上传下载功能
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- python之实现ftp上传下载代码(含错误处理)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...
- 【转】Android 服务器之SFTP服务器上传下载功能 -- 不错
原文网址:http://blog.csdn.net/tanghua0809/article/details/47056327 本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之 ...
- JavaWeb实现文件上传下载功能实例解析 (好用)
转: JavaWeb实现文件上传下载功能实例解析 转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web ...
- mac电脑终端使用scp上传/下载文件/文件夹
1.从服务器下载文件到本地电脑 1 scp -r remote_username@remote_ip:remote_folder local_folder 例如: 1 scp -r root@106. ...
- php实现文件上传下载功能小结
文件的上传与下载是项目中必不可少的模块,也是php最基础的模块之一,大多数php框架中都封装了关于上传和下载的功能,不过对于原生的上传下载还是需要了解一下的.基本思路是通过form表单post方式实现 ...
- python paramiko实现ssh上传下载执行命令
paramiko ssh上传下载执行命令 序言 最近项目经常需要动态在跳板机上登录服务器进行部署环境,且服务器比较多,每次完成所有服务器到环境部署执行耗费大量时间.为了解决这个问题,根据所学的执行实现 ...
随机推荐
- iOS--手势之谜
原文转至: http://www.cnblogs.com/huangjianwu/p/4675648.html iOS在手机APP的手势操作中包含了:拖动.捏合.旋转.点按.长按.轻扫.自定义等等,详 ...
- Android 应用程序集成Google 登录及二次封装
谷歌登录API: https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...
- 学习Swift的点点滴滴
1.类型标注 之前不知道为啥别人写的Swift语言的时候,定义常量或者变量的格式是 常量: let 常量名: 常量类型 = 常量值 或者 变量: var 变量名: 变量类型 = 初始值 原来书上有记 ...
- (三)Maven仓库介绍与本地仓库配置
1.Maven本地仓库/远程仓库的基本介绍 示意图: 本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找.对于依赖的包大家可以从这个地 ...
- 基于ntp的多服务器时间同步脚本
server服务器每1个小时更新一次时间,server服务器旗下同步服务器每5秒钟同步一次时间,同步服务器与外网不做交互,由server服务器进行同步时间.所以保证每一台同步服务器时间一致. #vi ...
- Linux下开启关闭SeLinux
SELinux (Security-Enhanced Linux) in Fedora is an implementation of mandatory access control in the ...
- 简述SQL2008部署多实例集群(学习)
数据库集群 集群的存在意义是为了保证高可用.数据安全.扩展性以及负载均衡. 什么是集群? 由二台或更多物理上独立的服务器共同组成的"虚拟"服务器称之为集群服务器.一项称做M ...
- c#获取时间
DateTime.Now.AddDays(10).ToShortDateString().ToString() addDays(整数) 一天前DateTime.Now.AddDays(-1).ToSh ...
- Redis时延问题分析及应对
Redis时延问题分析及应对 Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞: 当redis的数据量达到一定级别后(比如 ...
- iOS视图弹出、平移、旋转、翻转、剪切等变换效果实现
效果图: 1.定义属性 @property (nonatomic, strong) UIView *transformView;//发生变换的试图 @property (nonatomic, stro ...