关闭

.net操作sftp服务器

发表于:2015-4-22 11:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Ants    来源:51Testing软件测试网采编

97:          /// <summary>
98:          /// 删除SFTP文件
99:          /// </summary>
100:          /// <param name="remoteFile"></param>
101:          /// <returns></returns>
102:
103:          public void Delete(string remoteFile)
104:          {
105:              string fullRemotePath = defRemotePath + remoteFile.TrimStart('/');
106:              m_sftp.rm(fullRemotePath);
107:          }
108:          /// <summary>
109:          /// 获取SFTP文件列表
110:          /// </summary>
111:          /// <param name="remotePath"></param>
112:          /// <param name="fileType">文件后缀名称(.txt)</param>
113:          /// <returns></returns>
114:          public List<string> GetFileList(string remotePath, string fileType)
115:          {
116:              List<string> objList = new List<string>();
117:              string fullRemotePath = defRemotePath + remotePath.TrimStart('/');
118:              if (DirExist(fullRemotePath))
119:              {
120:                  Tamir.SharpSsh.java.util.Vector vvv = m_sftp.ls(fullRemotePath);
121:                  foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry qqq in vvv)
122:                  {
123:                      string sss = qqq.getFilename();
124:                      if (sss.Length > (fileType.Length + 1) && fileType == sss.Substring(sss.Length - fileType.Length))
125:                      { objList.Add(sss); }
126:                      else { continue; }
127:                  }
128:              }
129:              return objList;
130:          }
131:
132:          /// <summary>
133:          /// 目录是否存在
134:          /// </summary>
135:          /// <param name="dirName">目录名称必须从根开始</param>
136:          /// <returns></returns>
137:          public bool DirExist(string dirName)
138:          {
139:              try
140:              {
141:                  m_sftp.ls(defRemotePath + dirName.TrimStart('/'));
142:                  return true;
143:              }
144:              catch (Tamir.SharpSsh.jsch.SftpException)
145:              {
146:                  return false;//执行ls命令时出错,则目录不存在。
147:              }
148:          }
149:
150:          /// <summary>
151:          /// 创建目录
152:          /// </summary>
153:          /// <param name="dirName">目录名称必须从根开始</param>
154:          /// <returns></returns>
155:          public void Mkdir(string dirName)
156:          {
157:              Tamir.SharpSsh.java.util.Vector vvv = m_sftp.ls(defRemotePath);
158:              foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry fileName in vvv)
159:              {
160:                  string name = fileName.getFilename();
161:                  if (name == dirName)
162:                  {
163:                      throw new Exception("dir is exist");
164:                  }
165:              }
166:              m_sftp.mkdir(defRemotePath + dirName.TrimStart('/'));
167:          }
168:
169:          /// <summary>
170:          /// 连接SFTP
171:          /// </summary>
172:          public void ConnectSftp()
173:          {
174:              JSch jsch = new JSch();   //利用java实现的通讯包
175:              m_session = jsch.getSession(this.UserName, this.HostName, this.Port);
176:              m_session.setHost(this.HostName);
177:              MyUserInfo ui = new MyUserInfo();
178:              ui.setPassword(this.Password);
179:              m_session.setUserInfo(ui);
180:
181:              if (!m_session.isConnected())
182:              {
183:                  m_session.connect();
184:                  m_channel = m_session.openChannel("sftp");
185:                  m_channel.connect();
186:                  m_sftp = (ChannelSftp)m_channel;
187:              }
188:          }
189:
190:          /// <summary>
191:          /// 断开SFTP
192:          /// </summary>
193:          public void DisconnectSftp()
194:          {
195:              if (m_session.isConnected())
196:              {
197:                  m_channel.disconnect();
198:                  m_session.disconnect();
199:              }
200:          }
201:
202:          #endregion
203:
204:          //登录验证信息
205:          private class MyUserInfo : UserInfo
206:          {
207:              String passwd;
208:              public String getPassword() { return passwd; }
209:              public void setPassword(String passwd) { this.passwd = passwd; }
210:
211:              public String getPassphrase() { return null; }
212:              public bool promptPassphrase(String message) { return true; }
213:
214:              public bool promptPassword(String message) { return true; }
215:              public bool promptYesNo(String message) { return true; }
216:              public void showMessage(String message) { }
217:          }
218:
219:          public void Dispose()
220:          {
221:              this.DisconnectSftp();
222:              this.m_channel = null;
223:              this.m_session = null;
224:              this.m_sftp = null;
225:          }
226:      }
227:
228:  }
  配置文件内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="SftpServer" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<SftpServer>
<add key="host_name" value="127.0.0.1"/>
<add key="user_name" value="test"/>
<add key="password" value="123"/>
</SftpServer>
</configuration>
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号