telnet远程登陆程序

 
<dependency>
   <groupId>commons-net</groupId>
   <artifactId>commons-net</artifactId>
   <version>3.4</version>
</dependency>
 
package cn.tisson.ipran.gdcsgcf.driver.client;

import org.apache.commons.net.telnet.TelnetClient;
import org.apache.commons.net.telnet.TelnetOptionHandler;
import org.apache.commons.net.telnet.TerminalTypeOptionHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TelCommandDriver extends CommandDriver {
   protected Logger log = LoggerFactory.getLogger(TelCommandDriver.class);
   protected TelnetClient telnetClient = null;// telnet客户端
   @Override
   public int open(String ip, int port, String loginPrompt, String userName,
               String pwdPrompt, String pwd, String commandPrompt,StringBuffer resultBuf) {
      if(isOpen){
         return 0;
      }
      if (ip == null || ip.equals("") || port < -1) {
         log.error("需要telnet连接的ip 或端口不正确,请校验,ip="+ip+",port="+port);
         return -1;
      }
      try {
         this.ip=ip;
         telnetClient = new TelnetClient();
         TelnetOptionHandler optionhandler = new TerminalTypeOptionHandler(
               "dumb", true, true, true, true);
         telnetClient.addOptionHandler(optionhandler);
         telnetClient.setDefaultTimeout(2000000);
         telnetClient.connect(ip, port);
         telnetClient.setSoTimeout(2000000);
      } catch (Exception e) {
         resultBuf.append(e.getMessage());
         close();
         log.error(ip+" 打开telnet 连接出现异常,连接ip端口为" + ip + ":" + port, e);
         return -2;
      }
      String result=null;
      try {
         isr = new InputStreamReader(telnetClient.getInputStream(),
               charsetName);
         osr = new OutputStreamWriter(telnetClient.getOutputStream(),
               charsetName);
         result = read(loginPrompt, 30000);
         if (result.indexOf(loginPrompt) < 0) {
            close();
            if(result !=null && !"".equals(result)){
               resultBuf.append(ip+" 没有接收到输入用户名的提示符" + loginPrompt + "接收到的是" + result);
            }
            log.error(ip+" 没有接收到输入用户名的提示符" + loginPrompt + "接收到的是" + result);
            return -3;
         }
         write(userName);
         // add  by yw 延长网元响应时间
         result = read(pwdPrompt, 60000);
         if (result.indexOf(pwdPrompt) < 0) {
            close();
            if(result !=null && !"".equals(result)){
               resultBuf.append(ip+" 没有接收到输入密码的提示符" + pwdPrompt + "接收到的是" + result);
            }
            log.error(ip+" 没有接收到输入密码的提示符" + pwdPrompt + "接收到的是" + result);
            return -4;
         }
         write(pwd);
         result = read(commandPrompt, 30000);
         resultBuf.append(result);
         //yw 2018/4/24
         if(this.isAutoAnswer){
            this.write("N");
            result=read(commandPrompt);
            resultBuf.append(result);
         }
//       write("N");
//       result = read(commandPrompt, 30000);
//       resultBuf.append(result);
         if (result.indexOf(commandPrompt) < 0) {
            resultBuf.append(ip+" 没有接收到成功命令的提示符" + commandPrompt);
            log.error(ip+" 没有接收到成功命令的提示符" + commandPrompt + "接收到的是" + result);
            //认证失败
            if(result.contains("Error")||result.contains(loginPrompt)){
               close();
               log.error(ip+" 认证失败接收到的是" + result);
               return -23;
            }
            close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值