转: window中使用PSFTP/WinSCP实现SFTP上传下载
sftp 服务器: dbmonitor
1、sftp属于交互式的,所以你得缓存下命令
#!/bin/sh
sftp -o Port=3322
root@172.16.1.21:/opt << !
mput *.log
!
2、用scp一行搞定
scp -P3322 /opt/*.txt root@172.16.1.22:/tmp
3、用rsync同步整个目录
rsync -av '-e ssh -p 3322' /data/test root@172.16.1.23:/data
远端client 服务器
scp 192.168.4.45:/home/oracle/*.zip .
摘自百度百科
sftp 与 ftp 有着几乎一样的语法和功能。
SFTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式。
其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。
但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
1.WinSCP部分
1.1 cmd命令行实例
winscp>
1.2 Batch批处理实例
将下面语句存入1.txt:
option batch on option confirm off # Connect using a password # open 用户名:密码@主机 # Connect open 用户名:密码@主机 cd /home/user option transfer binary get /root/test.c d:/ put d:/test.txt close exit
执行脚本
1.3 C#程序实现
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics;
namespace SFTP { public class WinSCPtest { public string shellName { get { return "D:\\winscp437\\WinSCP.com"; } } public string userName { get { return "username"; } } public string userPassWord { get { return "userpassword"; } } public string serverAddress { get { return "172.0.0.1"; } } public string portNumber { get { return "21"; } } public string fromFile { get { return "D:\\psftp.txt"; } } public string toFile { get { return "WinSCP/psftp.txt"; } } public void upload() { Process CommandLine = new Process(); CommandLine.StartInfo.FileName = shellName; // CommandLine.StartInfo.Arguments = "/log=" + this._logPath; CommandLine.StartInfo.UseShellExecute = false; CommandLine.StartInfo.RedirectStandardInput = true; CommandLine.StartInfo.RedirectStandardOutput = true; CommandLine.StartInfo.CreateNoWindow = true; CommandLine.Start(); //username用户名 targetAddress IP地址 portNumber 端口号 CommandLine.StandardInput.WriteLine("open ftp://{0}:{1}@{2}:{3}", this.userName,this.userPassWord, this.serverAddress, this.portNumber); //上传文件到sftp服务器 string command = "put " + fromFile + " " + toFile ; //fromFile要传送的文件路径本地的绝对路径 toFile服务器上保存文件的路径相对路径 CommandLine.StandardOutput.DiscardBufferedData(); CommandLine.StandardInput.WriteLine(command); string result = CommandLine.StandardOutput.ReadLine(); } } }
1.4 在线资源
http://winscp.net/eng/docs/commandline
2.SFTP部分
2.1 cmd命令行实例
C:\Documents and Settings\sobne>e:
2.2 Batch批处理实例
将下面语句存入myscript.scr:
cd / put File1.txt put File2.txt put File3.txt close
执行脚本
2.3 C#程序实现
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading;
namespace Lib4Net {
public class PSFTPunity { public string shellCommand { get; set; }
public string serverName { get; set; } public string userName { get; set; } public string privateKey { get; set; }
public PSFTPunity() { } public PSFTPunity(string shell, string server, string user, string ppk) { shellCommand = shell; serverName = server; userName = user; privateKey = ppk; } /// <summary> /// Upload the files /// </summary> /// <param name="localFile">localfile fullname</param> /// <param name="remotePath">remotefile fullname</param> /// <returns>output of the plugin during its running in console</returns> public string Upload(string localFile, string remotePath) { string outPutMessage = "";
ProcessStartInfo processInfo = new ProcessStartInfo(); processInfo.FileName = this.shellCommand; processInfo.CreateNoWindow = true; processInfo.UseShellExecute = false; processInfo.RedirectStandardError = true; processInfo.RedirectStandardInput = true; processInfo.RedirectStandardOutput = true; string arguments = ""; arguments += userName + "@" + serverName + " "; arguments += "-i " + privateKey; processInfo.Arguments = arguments;
Process process = new Process(); try { process.StartInfo = processInfo; process.Start(); Thread.Sleep(5000); process.StandardInput.WriteLine("n"); Thread.Sleep(2000); //process.StandardInput.WriteLine("cd " + remotePath); process.StandardInput.WriteLine("put " + localFile + " " + remotePath); //process.StandardInput.Close(); Thread.Sleep(10000); //outPutMessage += process.StandardOutput.ReadToEnd(); //outPutMessage += process.StandardError.ReadToEnd(); process.WaitForExit(3000); process.Close(); return outPutMessage; } catch (Exception ex) { throw new Exception("Error occured during upload file to remote server!", ex); } finally { process.Dispose(); } } } }
2.4 在线资源
文中使用的软件下载地址:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
转: window中使用PSFTP/WinSCP实现SFTP上传下载的更多相关文章
- THINKPHP 3.2 PHP SFTP上传下载 代码实现方法
一.SFTP介绍:使用SSH协议进行FTP传输的协议叫SFTP(安全文件传输)Sftp和Ftp都是文件传输协议.区别:sftp是ssh内含的协议(ssh是加密的telnet协议), 只要sshd服 ...
- Xshell5下利用sftp上传下载传输文件
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...
- java:工具(汉语转拼音,压缩包,EXCEL,JFrame窗口和文件选择器,SFTP上传下载,FTP工具类,SSH)
1.汉语转拼音: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuP ...
- Java Sftp上传下载文件
需要使用jar包 jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...
- SFTP上传下载文件、文件夹常用操作
SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文 ...
- java实操之使用jcraft进行sftp上传下载文件
sftp作为临时的文件存储位置,在某些场合还是有其应景的,比如对账文件存放.需要提供一个上传的工具类.实现方法参考下: pom.xml中引入类库: <dependency> <gro ...
- java 实现Serv-U FTP 和 SFTP 上传 下载
两种ftp使用java的实现方式 ,代码都已测试 第一种:Serv-U FTP 先决条件: 1.Serv-U FTP服务器搭建成功. 2.jar包需要:版本不限制 <!--ftp上传需要的jar ...
- sftp 上传下载 命令介绍
sftp是Secure FileTransferProtocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法. sftp与 ftp有着几乎一样的语法和功能.SFTP为 SSH的一部分 ...
- JSP+Servlet中使用jspsmartupload.jar进行图片上传下载
JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...
随机推荐
- 用php和imagemagick来处理图片文件的上传和缩放处理
啥也不说,直接上代码,大家可以自行添加增加水印功能: <?php /** * * @author zhao jinhan * @date 2014年1月13日11:54:30 * @email ...
- float的精度,3个小数相加后精度丢失--小数比较使用bccomp()方法
$a = 1200.00;$b = 1199.80;$c = 0.1;$u = 0.12; $d = $b+$c+$u;var_dump($a);var_dump($d);var_dump(bccom ...
- diff and patch
A patch captures the changes of two different files (oldfile and newfile). Given the oldfile and the ...
- 调试minix内核
调试的时候,要把电脑当作单片机来使用,故先需要添加串口,方便进行打印调试 http://wiki.minix3.org/doku.php?id=developersguide:serialout 1. ...
- arm的编译器里已经有C标准库的lib包了,android为啥还要自己再实现呢
arm的编译器里已经有C标准库的lib包了,android为啥还要自己再实现呢 google自己搞的bionic libc来替代glibc想来是有原因的,本来glibc也是lgpl,应该也没有版权问题 ...
- NoRouteToHostException
http://stackoverflow.com/questions/1572215/how-to-avoid-a-noroutetohostexception 端口不够用,注意一定要关闭所有不用的连 ...
- ionic中 .col : 默认的定宽列
.col : 默认的定宽列 在ionic的栅格中,每一行的各列默认是等宽的,这使得实现一个图片 浏览界面非常简单.下图是instagram app的截图: instagram <!DOCTYPE ...
- CocoaAsyncSocket框架的简单封装
在iOS开发中使用socket(CFNetwork),一般都是用第三方库AsyncSocket. 参考博客:http://my.oschina.net/worldligang/blog/396881? ...
- eclipse配置tomcat及修改tomcat默认根目录
1.安装eclipse for j2ee和tomcat: 2.下载tomcat对eclipse的插件:http://www.eclipsetotale.com/tomcatPlugin.html 下载 ...
- linux跨主机复制文件或文件夹
复制文件基本格式:(本地到远程) scp 文件名 用户名@ip:文件全目录 如果是文件夹加上参数 -r scp -r 基础目录 用户名@ip:目录 栗子: scp local_file remote_ ...