Commit 44634a1f by huyi

添加ssh连接

parent 7d5a6dfc
File added
java.net.SocketException: Connection reset\r\n\tat java.net.SocketInputStream.read(SocketInputStream.java:209)\r\n\tat java.net.SocketInputStream.read(SocketInputStream.java:141)\r\n\tat sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)\r\n\tat sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)\r\n\tat sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)\r\n\tat java.io.InputStreamReader.read(InputStreamReader.java:184)\r\n\tat java.io.BufferedReader.fill(BufferedReader.java:161)\r\n\tat java.io.BufferedReader.read(BufferedReader.java:182)\r\n\tat org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)\r\n\tat org.apache.commons.net.ftp.FTP.__getReply(FTP.java:321)\r\n\tat org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)\r\n\tat org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:438)\r\n\tat org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:962)\r\n\tat org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:950)\r\n\tat org.apache.commons.net.SocketClient._connect(SocketClient.java:244)\r\n\tat org.apache.commons.net.SocketClient.connect(SocketClient.java:202)\r\n\tat com.fhkj.oltinspection.util.FTPUtil.loginFtp(FTPUtil.java:44)\r\n\tat com.fhkj.oltinspection.service.impl.FtpServiceImpl.loginFtp(FtpServiceImpl.java:33)\r\n\tat com.fhkj.oltinspection.service.impl.FtpServiceImpl$$FastClassBySpringCGLIB$$84aacc25.invoke(<generated>)\r\n\tat org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)\r\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n\tat org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)\r\n\tat com.fhkj.oltinspection.service.impl.FtpServiceImpl$$EnhancerBySpringCGLIB$$49ccb52.loginFtp(<generated>)\r\n\tat com.fhkj.oltinspection.controller.FtpController.loginFTP(FtpController.java:30)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)\r\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:634)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.fhkj.oltinspection.config.SimpleCORSFilter.doFilter(SimpleCORSFilter.java:34)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\r\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)\r\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\r\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)\r\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\n"
++ /dev/null
java.net.SocketException: Connection reset\r\n\tat java.net.SocketInputStream.read(SocketInputStream.java:209)\r\n\tat java.net.SocketInputStream.read(SocketInputStream.java:141)\r\n\tat sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)\r\n\tat sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)\r\n\tat sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)\r\n\tat java.io.InputStreamReader.read(InputStreamReader.java:184)\r\n\tat java.io.BufferedReader.fill(BufferedReader.java:161)\r\n\tat java.io.BufferedReader.read(BufferedReader.java:182)\r\n\tat org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)\r\n\tat org.apache.commons.net.ftp.FTP.__getReply(FTP.java:321)\r\n\tat org.apache.commons.net.ftp.FTP.__getReply(FTP.java:300)\r\n\tat org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:438)\r\n\tat org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:962)\r\n\tat org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:950)\r\n\tat org.apache.commons.net.SocketClient._connect(SocketClient.java:244)\r\n\tat org.apache.commons.net.SocketClient.connect(SocketClient.java:202)\r\n\tat com.fhkj.oltinspection.util.FTPUtil.loginFtp(FTPUtil.java:44)\r\n\tat com.fhkj.oltinspection.service.impl.FtpServiceImpl.loginFtp(FtpServiceImpl.java:33)\r\n\tat com.fhkj.oltinspection.service.impl.FtpServiceImpl$$FastClassBySpringCGLIB$$84aacc25.invoke(<generated>)\r\n\tat org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\r\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\r\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)\r\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)\r\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\r\n\tat org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)\r\n\tat com.fhkj.oltinspection.service.impl.FtpServiceImpl$$EnhancerBySpringCGLIB$$49ccb52.loginFtp(<generated>)\r\n\tat com.fhkj.oltinspection.controller.FtpController.loginFTP(FtpController.java:30)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:498)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)\r\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\r\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)\r\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)\r\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)\r\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)\r\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:634)\r\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)\r\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat com.fhkj.oltinspection.config.SimpleCORSFilter.doFilter(SimpleCORSFilter.java:34)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\r\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\r\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)\r\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\r\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)\r\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\r\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\r\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\r\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\r\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)\r\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)\r\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)\r\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)\r\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\n"
\ No newline at end of file
connectionTimeout=60000
returnTimeout=1000L
\ No newline at end of file
......@@ -69,6 +69,11 @@
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.51</version>
</dependency>
</dependencies>
<build>
......
package com.fhkj.oltinspection.exception;
public class OltException extends RuntimeException{
public OltException() {
super();
// TODO Auto-generated constructor stub
}
public OltException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
// TODO Auto-generated constructor stub
}
public OltException(String message, Throwable cause) {
super(message, cause);
// TODO Auto-generated constructor stub
}
public OltException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
public OltException(Throwable cause) {
super(cause);
// TODO Auto-generated constructor stub
}
}
\ No newline at end of file
package com.fhkj.oltinspection.pojo;
public class SshConnection {
private String host;
private Integer port;
private String username;
private String password;
public SshConnection () {
super ();
}
public SshConnection (String host, Integer port, String username, String password) {
super();
this.host = host;
this.port = port;
this.username = username;
this.password = password;
}
/**
* @return the host
*/
public String getHost() {
return host;
}
/**
* @param host the host to set
*/
public void setHost(String host) {
this.host = host;
}
/**
* @return the port
*/
public Integer getPort() {
return port;
}
/**
* @param port the port to set
*/
public void setPort(Integer port) {
this.port = port;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString () {
return "host:" + this.host + ", port:" + this.port + ", username:" + this.username + ", password:" + this.password;
}
}
\ No newline at end of file
......@@ -30,7 +30,8 @@ public class FtpServiceImpl implements FtpService {
public Result loginFtp(Integer id) {
Optional<FtpConfigEntity> ftpConfigEntityOptional = ftpConfigRepository.findById(id);
if (ftpConfigEntityOptional.isPresent()) {
return FTPUtil.loginFtp(ftpConfigEntityOptional.get());
FTPUtil ftpUtil = new FTPUtil();
return ftpUtil.loginFtp(ftpConfigEntityOptional.get());
} else {
return new Result ("未能查询到frp登录所需的信息", false);
}
......
package com.fhkj.oltinspection.util;
public class ClearUtil {
public static void openExe() {
Runtime rn = Runtime.getRuntime();
try {
rn.exec("ClearMemory.exe");
} catch (Exception e) {
System.out.println("Error exec!");
}
}
}
......@@ -2,6 +2,8 @@ package com.fhkj.oltinspection.util;
import java.io.IOException;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.fhkj.oltinspection.entity.FtpConfigEntity;
import com.fhkj.oltinspection.pojo.Result;
......@@ -14,31 +16,57 @@ import org.apache.commons.net.ftp.FTPClient;
*/
public class FTPUtil {
/**
* @param ftpConfigEntity
* @return Result
* @see 验证ftp参数是否合法
*/
private Result validateFtpParameter (FtpConfigEntity ftpConfigEntity) {
if (null == ftpConfigEntity.getHost() || "".equals(ftpConfigEntity.getHost().trim())) {
return new Result ("IP为空", false);
} else if (!validateHost(ftpConfigEntity.getHost())) {
return new Result ("IP地址不合法", false);
}
if (null == ftpConfigEntity.getPort() || "0".equals(ftpConfigEntity.getPort().toString())) {
return new Result ("port为空", false);
}
if (null == ftpConfigEntity.getUsername() || "".equals(ftpConfigEntity.getUsername().trim())) {
return new Result ("username为空", false);
}
if (null == ftpConfigEntity.getPassword() || "".equals(ftpConfigEntity.getPassword().trim())) {
return new Result ("password为空", false);
}
return new Result ("验证成功", true);
}
/**
* @param ip
* @return boolean
* @see 正则验证ip地址是否合法
*/
private boolean validateHost (String ip) {
String pattern = "(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})(\\.(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})){3}";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(ip);
return m.matches();
}
/**
* @see 用来来登录ftp
* @param com.fhkj.oltinspection.entity.FtpConfigEntity
* @exception IOException
* @return Result
*/
public static Result loginFtp(FtpConfigEntity ftpConfigEntity) {
public Result loginFtp(FtpConfigEntity ftpConfigEntity) {
if (ftpConfigEntity == null) {
return new Result("在数据库中未能获取到ftp的连接配置信息", false);
} else {
Result result = validateFtpParameter(ftpConfigEntity);
if (!(boolean)result.getData()) {
return result;
}
}
String host = ftpConfigEntity.getHost();
Integer port = ftpConfigEntity.getPort();
String username = ftpConfigEntity.getUsername();
String password = ftpConfigEntity.getPassword();
if (null == host || "".equals(host.trim())) {
return new Result("IP为空", false);
}
if (null == port || "0".equals(port)) {
return new Result("port为空", false);
}
if (null == username || "".equals(username.trim())) {
return new Result("username为空", false);
}
if (null == password || "".equals(password.trim())) {
return new Result("password为空", false);
}
FTPClient ftpClient = new FTPClient(); // 创建ftp连接对象
try {
ftpClient.connect (host, port); // 设置ip和端口
......
package com.fhkj.oltinspection.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
import org.springframework.util.ResourceUtils;
public class ReadProperties {
public static Map<String, Object> sshConfigMap = null;
static {
try {
File file = ResourceUtils.getFile("ptnConfig/performancetime.properties");
Properties properties = new Properties();
BufferedReader bufferedReader;
bufferedReader = new BufferedReader(new FileReader(file));
properties.load(bufferedReader);
int connectionTimeout = Integer.parseInt(properties.getProperty("connectionTimeout"));
long returnTimeout = Long.parseLong(properties.getProperty("returnTimeout"));
sshConfigMap.put ("connectionTimeout", connectionTimeout);
sshConfigMap.put ("returnTimeout", returnTimeout);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
\ No newline at end of file
package com.fhkj.oltinspection.util;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.TimeoutException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.fhkj.oltinspection.exception.OltException;
import com.fhkj.oltinspection.pojo.Result;
import com.fhkj.oltinspection.pojo.SshConnection;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelShell;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
/**
* @author 胡懿
* @see 这个类提供shhz相关操作,这个类不提供空的构造方法,只有传入基本的连接参数才能初始化完成
*/
public class SSHUtil {
private SshConnection sshConnection;
private Channel channel = null;
private InputStream ins = null;
private DataOutputStream dos = null;
private Map<String, Object> sshConfigMap = (Map<String, Object>) ReadProperties.sshConfigMap;
public SSHUtil(SshConnection sshConnection) {
super();
Result result = validateSshConnectionParameter(sshConnection);
if (!(boolean) result.getData()) {
throw new OltException(result.getMsg());
}
this.sshConnection = sshConnection;
}
/**
* @return the sshConnection
*/
public SshConnection getSshConnection() {
return sshConnection;
}
/**
* @param sshConnection the sshConnection to set
*/
public void setSshConnection(SshConnection sshConnection) {
this.sshConnection = sshConnection;
}
/**
* @param sshConnection
* @return Result
* @see 该方法用于判断连接参数是否合法
*/
private Result validateSshConnectionParameter(SshConnection sshConnection) {
if (null == sshConnection.getHost() || "".equals(sshConnection.getHost())) {
return new Result("IP地址为空", false);
} else if (!validateHost(sshConnection.getHost())) {
return new Result("ip地址不合法", false);
}
if (null == sshConnection.getPort() || "0".equals(sshConnection.getPort().toString())) {
return new Result("端口号为空", false);
}
if (null == sshConnection.getUsername() || "".equals(sshConnection.getUsername())) {
return new Result("用户名为空", false);
}
if (null == sshConnection.getPassword() || "".equals(sshConnection.getPassword())) {
return new Result("密码为空", false);
}
return new Result("验证成功", true);
}
/**
* @param ip
* @return boolean
* @see 正则验证ip地址是否合法
*/
private boolean validateHost(String ip) {
String pattern = "(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})(\\.(2(5[0-5]{1}|[0-4]\\d{1})|[0-1]?\\d{1,2})){3}";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(ip);
return m.matches();
}
/**
* @return Result
* @see 打开连接的方法,该方法调用时,需要先通过构造方法设置连接参数SshConnection
*/
public Result initConnection() {
String host = this.sshConnection.getHost();
Integer port = this.sshConnection.getPort();
String username = this.sshConnection.getUsername();
String password = this.sshConnection.getPassword();
Session session = null; // 打开连接
JSch jsch = new JSch();
Properties config = new Properties();
try {
session = jsch.getSession(username, host, port);
session.setPassword(password);
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout((int) sshConfigMap.get("connectionTimeout"));
session.connect();
channel = session.openChannel("shell");
((ChannelShell) channel).setPtyType("vt100", 80, 100, 640, 960);
channel.connect();
} catch (JSchException e) {
return new Result("连接异常", PackageExceptionUtil.exceptionToString(e));
}
return new Result("连接成功", true);
}
/**
* @see 初始化对设备的输入输出流
*/
public Result initInputAndOutput() {
if (null == channel) {
throw new OltException("channel为空,请先初始化连接");
}
try {
this.ins = channel.getInputStream();
this.dos = new DataOutputStream(channel.getOutputStream());
} catch (IOException e) {
return new Result("开启成功", PackageExceptionUtil.exceptionToString(e));
}
return new Result("开启成功", true);
}
/**
* @param command(命令),isRead(是否读取设备对该命令的返回)
* @return Result
* @see 用这个方法向设备输入命令,参数command是输入的命令,不需要加\r\n,已经加上了,
* isRead代表是否读取设备的返回,true的时候会返回
*/
public Result sendCommand(String command, boolean isRead) {
if (null == this.ins || null == this.dos) {
throw new OltException("请先调用initInputAndOutput()方法初始化输入输出流");
}
try {
this.dos.writeBytes(command + "\r\n"); // 输入命令
this.dos.flush();
} catch (IOException e) {
return new Result("命令输入异常", PackageExceptionUtil.exceptionToString(e));
}
if (isRead) { // isRead是ture时读取设备返回的内容
StringBuffer sb = new StringBuffer();
try {
byte[] buff = new byte[1024];
int resRead = 0;
long time = (long) sshConfigMap.get("returnTimeout");
long begin = System.currentTimeMillis();
while (true) {
if (System.currentTimeMillis() > begin + time) {
throw new TimeoutException("read time out");
}
int len = this.ins.available();
if (len > 0) {
resRead = this.ins.read(buff);
if (resRead > 0) {
String str = new String(buff, 0, resRead);
sb.append(str);
if (sb.toString().trim().endsWith("#")) {
break;
}
}
} else {
Thread.sleep(100);
}
}
} catch (TimeoutException | InterruptedException | IOException e) {
return new Result("读取失败", PackageExceptionUtil.exceptionToString(e));
}
return new Result("读取成功", sb.toString());
} else {
return new Result("输入成功", true);
}
}
/**
* @see 退出该设备
*/
public Result sshExit() {
try {
this.dos.writeBytes("exit\r\n");
this.dos.writeBytes("exit\r\n");
this.dos.flush();
this.dos.close();
this.ins.close();
this.channel = null;
this.sshConnection = null;
this.sshConfigMap.clear();
this.sshConfigMap = null;
System.gc();
ClearUtil.openExe();
} catch (IOException e) {
return new Result("退出失败", PackageExceptionUtil.exceptionToString(e));
}
return new Result("退出成功", true);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment