.net 的SSH操作linux文件
来源:互联网 发布:淘宝招聘客服 编辑:程序博客网 时间:2024/06/07 04:49
我们知道在开发一个网站的时候,有时候会有多个服务器,一个应用服务器和数据服务器,而且文件服务器一般都是linux系统,那么,今天的问题就来了,就是怎么跨服务器操作linux系统的文件,比如我们要在linux上面做上传文件,下载文件,删除文件等操作呢?下面开始我们的主题。
不知道大家有没有听过Rechi.SSHNet类库,这个类库是开源的,用SFTP协议操作文件,它是基于协议。
using System.Collections.Generic; using System.Text; using System; using System.Collections; using System.IO; using Renci.SshNet; namespace SFTPHelper { /************************描述 SFTP操作类****************************************** **创建者 : aaa **创建时间: 2017-03-11 **描述 : SFTP操作类 *********************************************************************************/ /// <summary> /// SFTP操作类 /// </summary> public class SFTPOperation { #region 字段或属性 private SftpClient sftp; /// <summary> /// SFTP连接状态 /// </summary> public bool Connected { get { return sftp.IsConnected; } } #endregion #region 构造 /// <summary> /// 构造 /// </summary> /// <param name="ip">IP</param> /// <param name="port">端口</param> /// <param name="user">用户名</param> /// <param name="pwd">密码</param> public SFTPOperation(string ip, string port, string user, string pwd) { sftp = new SftpClient(ip, Int32.Parse(port), user, pwd); } #endregion #region 连接SFTP /// <summary> /// 连接SFTP /// </summary> /// <returns>true成功</returns> public bool Connect() { try { if (!Connected) { sftp.Connect(); } return true; } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("连接SFTP失败,原因:{0}", ex.Message)); throw new Exception(string.Format("连接SFTP失败,原因:{0}", ex.Message)); } } #endregion #region 断开SFTP /// <summary> /// 断开SFTP /// </summary> public void Disconnect() { try { if (sftp != null && Connected) { sftp.Disconnect(); } } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("断开SFTP失败,原因:{0}", ex.Message)); throw new Exception(string.Format("断开SFTP失败,原因:{0}", ex.Message)); } } #endregion #region SFTP上传文件 /// <summary> /// SFTP上传文件 /// </summary> /// <param name="localPath">本地路径</param> /// <param name="remotePath">远程路径</param> public bool Put(string localPath, string remotePath) { bool result = false; try { using (var file = File.OpenRead(localPath)) { Connect(); sftp.UploadFile(file, remotePath); Disconnect(); result = true; } } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件上传失败,原因:{0}", ex.Message)); throw new Exception(string.Format("SFTP文件上传失败,原因:{0}", ex.Message)); } return result; } #endregion #region SFTP获取文件 /// <summary> /// SFTP获取文件 /// </summary> /// <param name="remotePath">远程路径</param> /// <param name="localPath">本地路径</param> public bool Get(string remotePath, string localPath) { bool result = false; try { Connect(); var byt = sftp.ReadAllBytes(remotePath); Disconnect(); File.WriteAllBytes(localPath, byt); result = true; } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件获取失败,原因:{0}", ex.Message)); throw new Exception(string.Format("SFTP文件获取失败,原因:{0}", ex.Message)); } return result; } #endregion #region 删除SFTP文件 /// <summary> /// 删除SFTP文件 /// </summary> /// <param name="remoteFile">远程路径</param> public void Delete(string remoteFile) { try { Connect(); sftp.Delete(remoteFile); Disconnect(); } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件删除失败,原因:{0}", ex.Message)); throw new Exception(string.Format("SFTP文件删除失败,原因:{0}", ex.Message)); } } #endregion #region 获取SFTP文件列表 /// <summary> /// 获取SFTP文件列表 /// </summary> /// <param name="remotePath">远程目录</param> /// <param name="fileSuffix">文件后缀</param> /// <returns></returns> public ArrayList GetFileList(string remotePath, string fileSuffix) { try { Connect(); var files = sftp.ListDirectory(remotePath); Disconnect(); var objList = new ArrayList(); foreach (var file in files) { string name = file.Name; if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Substring(name.Length - fileSuffix.Length)) { objList.Add(name); } } return objList; } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message)); throw new Exception(string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message)); } } #endregion #region 移动SFTP文件 /// <summary> /// 移动SFTP文件 /// </summary> /// <param name="oldRemotePath">旧远程路径</param> /// <param name="newRemotePath">新远程路径</param> public void Move(string oldRemotePath, string newRemotePath) { try { Connect(); sftp.RenameFile(oldRemotePath, newRemotePath); Disconnect(); } catch (Exception ex) { //TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件移动失败,原因:{0}", ex.Message)); throw new Exception(string.Format("SFTP文件移动失败,原因:{0}", ex.Message)); } } #endregion } }类库的下载地址:http://download.csdn.net/detail/chengmin1989/9812647
0 0
- .net 的SSH操作linux文件
- linux 下记录ssh的操作日志
- SSH 文件操作命令
- Linux的文件操作
- Linux的文件操作
- asp.net 文件的操作
- .net对于文件的操作
- ssh图形界面操作linux
- 基于SSH的LINUX间文件传送
- Linux SSH 传文件
- linux ssh下载文件
- Linux下的文件操作
- linux 下的文件操作
- Linux 下的文件操作
- Linux上的文件操作
- linux下的文件操作
- linux文件的读写操作
- Linux的文件操作API
- 使用log_format为Nginx服务器设置更详细的日志格式
- Volatile关键字的使用
- 基于Kafka 0.9版本 使用ACL进行权限控制
- Oracle之唯一性约束(UNIQUEConstraint)用法详解
- android IOS java使用DES统一加密策略
- .net 的SSH操作linux文件
- Java学习之继承
- SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.Oracle ’
- CAS硬件指令
- 超详细搭建PhpStorm+PhpStudy开发环境
- 关于nested transactions not supported的问题
- Shape Number HDU
- 软件流程规范---常见安全问题
- RPC 的概念模型与实现解析