java实现telnet功能,待实现windows下远程多机自动化发布软件后台代码

package com.org.softwore.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;

import org.apache.commons.net.telnet.TelnetClient;

import com.org.softwore.domain.TelnetInfo;

public class TelnetUtil {
 private TelnetClient telnet = new TelnetClient("VT220");
 private InputStream in;
 private PrintStream out;
 private String prompt = ">";
 String s;

public void TelnetCmd(TelnetInfo telnetInfo) throws SocketException,
   IOException, InterruptedException {

// 防火墙中高级的网络连接设置的本地连接取消选择
  // Connect to the specified server
  telnet.connect(telnetInfo.getServerIp(), telnetInfo.getServerPort());
  // Get input and output stream references
  in = telnet.getInputStream();
  out = new PrintStream(telnet.getOutputStream());

// Login telnet
  readUntil("login: ");
  write(telnetInfo.getServerUser());
  readUntil("password: ");
  write(telnetInfo.getServerPwd());
  readUntil(prompt);

// 执行命令
  if (telnetInfo.getMap() != null) {
   int a = 0;
   for (Integer id : telnetInfo.getMap().keySet()) {
    String temp = telnetInfo.getMap().get(id);
    write(temp);
    // 处理ftp登录,不需要执行readUntil(prompt)
    if (temp.startsWith("ftp")) {
     a = 2;
    }
    if (a > 0) {
     a = a - 1;
     continue;
    } else {
     readUntil(prompt);
    }

}
  }
  System.out.println("\n");
 }

public String readUntil(String pattern) throws IOException {
  char lastChar = pattern.charAt(pattern.length() - 1);
  StringBuffer sb = new StringBuffer();
  // boolean found = false;
  char ch = (char) in.read();

while (true) {
   sb.append(ch);
   if (ch == lastChar) {
    if (sb.toString().endsWith(pattern)) {
     // 处理编码,界面显示乱码问题
     byte[] temp = sb.toString().getBytes("iso8859-1");
     System.out.print(new String(temp, "GBK"));
     return new String(temp, "GBK");
    }
   }
   ch = (char) in.read();
  }
 }

public void write(String value) throws InterruptedException {
  out.println(value);
  out.flush();
  Thread.sleep(1000);
 }

public void disconnect() throws IOException {
  telnet.disconnect();
 }
}

package com.org.softwore.domain;

import java.io.Serializable;
import java.util.TreeMap;

public class TelnetInfo implements Serializable {

/**
  * 
  */
 private static final long serialVersionUID = -6592407260449335815L;
 private String serverIp;
 private String serverUser;
 private String serverPwd;
 private int serverPort;
 private String ftpIp;
 private String ftpUser;
 private String ftpPwd;
 private String ftpPort;
 private TreeMap map;

public TreeMap getMap() {
  return map;
 }

public void setMap(TreeMap map) {
  this.map = map;
 }

public String getServerIp() {
  return serverIp;
 }

public void setServerIp(String serverIp) {
  this.serverIp = serverIp;
 }

public String getServerUser() {
  return serverUser;
 }

public void setServerUser(String serverUser) {
  this.serverUser = serverUser;
 }

public String getServerPwd() {
  return serverPwd;
 }

public void setServerPwd(String serverPwd) {
  this.serverPwd = serverPwd;
 }

public int getServerPort() {
  return serverPort;
 }

public void setServerPort(int serverPort) {
  this.serverPort = serverPort;
 }

public String getFtpIp() {
  return ftpIp;
 }

public void setFtpIp(String ftpIp) {
  this.ftpIp = "ftp " + ftpIp;
 }

public String getFtpUser() {
  return ftpUser;
 }

public void setFtpUser(String ftpUser) {
  this.ftpUser = ftpUser;
 }

public String getFtpPwd() {
  return ftpPwd;
 }

public void setFtpPwd(String ftpPwd) {
  this.ftpPwd = ftpPwd;
 }

public String getFtpPort() {
  return ftpPort;
 }

public void setFtpPort(String ftpPort) {
  this.ftpPort = ftpPort;
 }

}

package com.org.softwore.service;

public interface TelnetService {

public boolean windowsTelnetDownLoad();

public boolean windowsTelnetUpLoad();

public boolean windowsTelnetUpGrade();
 public boolean windowsTelnetTomcat(String stats);
 public boolean windowsTelnetBackUpSoftware();
}

package com.org.softwore.service.impl;

import java.io.IOException;
import java.net.SocketException;
import java.util.TreeMap;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.org.softwore.domain.TelnetInfo;
import com.org.softwore.service.TelnetService;
import com.org.softwore.util.TelnetUtil;

@Transactional
@Service("telnetService")
public class TelnetServiceImpl implements TelnetService {

/**
  * 上传升级问价到ftp服务器
  */
 @Override
 public boolean windowsTelnetUpLoad() {
  boolean reslut = false;

TelnetInfo telnetInfo = new TelnetInfo();
  telnetInfo.setServerIp("127.0.0.1");
  telnetInfo.setServerUser("administrator");
  telnetInfo.setServerPwd("123456");
  telnetInfo.setServerPort(23);

TreeMap map = new TreeMap();
  map.put(1, "ftp 10.39.62.45");
  map.put(2, "admin");
  map.put(3, "admintianyi");
  map.put(4, "bin");
  map.put(5, "mkdir test1");
  map.put(6, "cd /test1");
  map.put(7, "put c:\\upgrade\\appMarketWebApi.zip");
  map.put(8, "put c:\\upgrade\\T_RANKSWITCHTEMP.sql");
  map.put(9, "bye");
  telnetInfo.setMap(map);

TelnetCmd(telnetInfo);
  return reslut;
 }
 /**
  * 下载升级程序和文件
  */
 @Override
 public boolean windowsTelnetDownLoad() {
  boolean reslut = false;

TelnetInfo telnetInfo = new TelnetInfo();
  //telnet
  telnetInfo.setServerIp("127.0.0.1");
  telnetInfo.setServerUser("administrator");
  telnetInfo.setServerPwd("123456");
  telnetInfo.setServerPort(23);

TreeMap map = new TreeMap();
  map.put(1, "cd c:\\");
  map.put(2, "rd test /s /q");
  map.put(3, "mkdir test");
  map.put(4, "ftp 10.39.62.45");
  map.put(5, "admin");
  map.put(6, "admintianyi");
  map.put(7, "bin");
  map.put(8, "lcd c:\\test");
  map.put(9, "cd test1");
  map.put(10, "get appMarketWebApi.zip");
  map.put(11, "get T_RANKSWITCHTEMP.sql");
  map.put(12, "bye");
  telnetInfo.setMap(map);

TelnetCmd(telnetInfo);
  return reslut;
 }
 /**
  * 服务器开启和关闭
  */
 @Override
 public boolean windowsTelnetTomcat(String stats) {
  //安装tomcat7,使用服务来进行启动和停止
  boolean reslut = false;

TelnetInfo telnetInfo = new TelnetInfo();
  telnetInfo.setServerIp("127.0.0.1");
  telnetInfo.setServerUser("administrator");
  telnetInfo.setServerPwd("123456");
  telnetInfo.setServerPort(23);

// 需要执行的sql语句
  TreeMap map = new TreeMap();
  if(stats.equals("start")){
   map.put(1, "net start Tomcat7");
  }
  if(stats.equals("stop")){
   map.put(1, "net stop Tomcat7");
  }
  telnetInfo.setMap(map);

TelnetCmd(telnetInfo);
  return reslut;
 }
 /**
  * 备份软件程序
  */
 @Override
 public boolean windowsTelnetBackUpSoftware(){
  boolean reslut = false;
  TelnetInfo telnetInfo = new TelnetInfo();
  telnetInfo.setServerIp("127.0.0.1");
  telnetInfo.setServerUser("administrator");
  telnetInfo.setServerPwd("123456");
  telnetInfo.setServerPort(23);
  // 需要执行的sql语句
  TreeMap map = new TreeMap();
  //执行sql脚本
  map.put(1, "cd c:\\");
  map.put(2, "rd testback /s /q");
  map.put(3, "mkdir testback");
  map.put(4, "cd c:\\testback");
  map.put(5, "mkdir appMarketWebApi");
  map.put(6, "xcopy \"c:\\Tomcat 7.0\\webapps\\appMarketWebApi\"  appMarketWebApi /s /y");
  telnetInfo.setMap(map);
  TelnetCmd(telnetInfo);
  return reslut;
 }
 /**
  * 执行sql脚本和升级程序
  */
 @Override
 public boolean windowsTelnetUpGrade() {
  boolean reslut = false;

TelnetInfo telnetInfo = new TelnetInfo();
  telnetInfo.setServerIp("127.0.0.1");
  telnetInfo.setServerUser("administrator");
  telnetInfo.setServerPwd("123456");
  telnetInfo.setServerPort(23);

// 需要执行的sql语句
  TreeMap map = new TreeMap();
  //执行sql脚本
  map.put(1, "sqlplus appstore/appstore@appstore226");
  map.put(2, "@c:\\test\\T_RANKSWITCHTEMP.sql");
  map.put(3, "exit");
  //执行升级程序
  map.put(5, "cd c:\\test");
  map.put(6, "unzip appMarketWebApi.zip");
  map.put(7, "xcopy appMarketWebApi \"c:\\Tomcat 7.0\\webapps\\appMarketWebApi\" /s /y");
  telnetInfo.setMap(map);

TelnetCmd(telnetInfo);
  return reslut;
 }

/**
  * 公共的调用执行telnet命令
  * @param telnetInfo
  * @return
  */
 public boolean TelnetCmd(TelnetInfo telnetInfo) {
  boolean reslut = false;
  if (telnetInfo != null) {
   TelnetUtil telnet = new TelnetUtil();
   try {
    telnet.TelnetCmd(telnetInfo);
    telnet.disconnect();
    reslut = true;
   } catch (SocketException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
  return reslut;
 }
}

package com.org.softwore.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

import com.org.softwore.service.TelnetService;

@Controller("telnetController")
public class TelnetController {

@Autowired
 @Qualifier("telnetService")
 private TelnetService telnetService;

/**
  * 上传升级问价到ftp服务器
  */
 public void windowsTelnetUpLoad() {
  telnetService.windowsTelnetUpLoad();
 }

/**
  * 下载升级程序和文件
  */
 public void windowsTelnetDownLoad() {
  telnetService.windowsTelnetDownLoad();
 }

/**
  * 备份软件程序
  */
 public void windowsTelnetBackUpSoftware() {
  telnetService.windowsTelnetBackUpSoftware();
 }

/**
  * 服务关闭
  */
 public void windowsTelnetStopTomcat() {
  String stats = "stop";
  telnetService.windowsTelnetTomcat(stats);
 }

/**
  * 执行sql脚本和升级程序
  */
 public void windowsTelnetUpGrade() {
  telnetService.windowsTelnetUpGrade();
 }

/**
  * 服务开启
  */
 public void windowsTelnetStartTomcat() {
  String stats = "start";
  telnetService.windowsTelnetTomcat(stats);
 }
}

package com.org.softwore.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.org.softwore.controller.TelnetController;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration( { "/applicationContext.xml" })
public class TelnetUtilTest {

@Autowired
 @Qualifier("telnetController")
 private TelnetController telnetController;

/**
  * 上传升级问价到ftp服务器
  */
 @Test
 public void windowsTelnetUpLoad() {
  telnetController.windowsTelnetUpLoad();
 }

/**
  * 下载升级程序和文件
  */
 @Test
 public void windowsTelnetDownLoad() {
  telnetController.windowsTelnetDownLoad();
 }

/**
  * 备份软件程序
  */
 @Test
 public void windowsTelnetBackUpSoftware() {
  telnetController.windowsTelnetBackUpSoftware();
 }

/**
  * 关闭服务
  */
 @Test
 public void windowsTelnetStopTomcat() {
  telnetController.windowsTelnetStopTomcat();
 }

/**
  * 执行sql脚本和升级程序
  */
 @Test
 public void windowsTelnetUpGrade() {
  telnetController.windowsTelnetUpGrade();
 }

/**
  * 启动服务
  */
 @Test
 public void windowsTelnetStartTomcat() {
  telnetController.windowsTelnetStartTomcat();
 }
}

flask实现后台java实现前端页面_java实现telnet功能,待实现windows下远程多机自动化发布软件后台代码...相关推荐

  1. java程序安装 打包_Java项目怎么打包成在windows下的可安装程序

    一:将项目文件导出成jar文件: 1,找到我们完成的项目代码,导出:(右键单击->Export) 2,选择java ->JAR file 下一步: 3,第一个不勾选,下一步: 4,选择ja ...

  2. 解决java重定向前端页面不显示一闪而过的问题

    在spriingboot框架里面使用 HttpServletResponse 的重定向方法时前端页面不显示一闪而过 原代码: response.sendRedirect( "http://l ...

  3. 前端页面导出excel文件功能(导出)

    方法一: 一.后台管理系统中常有导出excel功能,可定义一个函数,在其他.vue文件中导入即可用. 1.1定义函数 export function excelDown(res, name = &qu ...

  4. Java renameto无效_Java重命名文件renameTo在windows下失败原因分析

    在用Java压缩文件时,将原始数据xxx.dat压缩为xxx.tmp的临时文件,压缩完成以后再将xxx.tmp文件重命名为xxx.z.可怜我在linux下测试成功,而在windows下则一直没有反应. ...

  5. Java中文jsp页面_java中文乱码解决之道(七)—–JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. 在上面代码中有两个地方存在编码:pageEncodi ...

  6. java验证注册页面_Java使用正则表达式对注册页面进行验证功能实现

    本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示: package regex; import java.util.Scanner; import java.util.reg ...

  7. java ajax上传图片插件_java图片上传并预览,前台用jQuery插件AjaxFileUpload,后台用FileUtils.copyFile....

    个人笔记,以备后用. 表体代码: 查看图片 js代码(记得要引入jquery库和ajaxfileupload库): //上传文件id号 function fileUpload(uploadFileId ...

  8. 利用JAVA手机登录页面_Java用户登陆界面例子 代码

    2,流式布局:FlowLayout.布局方式为从左到右,从上到下.是JPanel(轻量级容器)的默认面板布局. 3,网格布局:GridLayout.布局方式为行和列组成的网络.布局方法:setLayo ...

  9. java 不刷新页面_java – 更新jsp页面的内容而不刷新

    您应该考虑使用Ajax(jQuery是我的首选方法). 然后,这将触发一个控制器,该控制器将返回您想要的数据而不刷新页面. 所以,例如,如果你有一个login.jsp - Login Hello pl ...

最新文章

  1. python爬虫项目教程_Python 爬虫速成教程,还有35个实战项目送给你
  2. vs2015更改默认项目类型
  3. 物联网架构成长之路(3)-EMQ消息服务器了解
  4. 004 Android之其他控件
  5. spark on k8s准确完整的测试步骤:提交Pi计算程序至k8s集群
  6. RouterOS SOCKS代理服务器(官方文档翻译)
  7. Migw用CMD编译C语言,NOTEPAD++用MinGW编译C,C++语言
  8. python until怎么用_python基础之从认识python到python的使用
  9. 入侵sql serve 后拿服务器_quot;条条大路quot;拿webshell
  10. BCGControlBar教程:可视化管理器
  11. WordPress纯PHP代码实现记录搜索引擎蜘蛛爬行记录
  12. python基础教程是什么-python基础教程之python是什么?
  13. mysql二进制日志管理
  14. vim:the damn garbled of vim-devicons from nerdtree
  15. 阿里云LOGO在线设计入口说明
  16. dpdk-16.04 扩展新网卡驱动过程
  17. 如何解决SQL Server2008不允许保存修改的问题
  18. MicroNet论文复现:用极低的FLOPs改进图像识别
  19. 软件自动化测试可行性分析,基于 AI 的软件自动化测试思考与实践—kylinTOP 测试与监控平台...
  20. ubuntu windows远程桌面 xfce4

热门文章

  1. 《Python趣味创意编程》新书上架了
  2. java中创建对象的方式有哪些,Java中创建对象的四种方式
  3. “头疼”的俄罗斯开发者:不要再买我的软件了,收入不能提现
  4. 编译速度谁“最快”?25岁的 C++Builder 还能打
  5. 名校大厂 AI 高手云集,芒果 TV 音视频算法大赛硕果累累
  6. 文件系统:隐匿在 Linux 背后的机制
  7. 陆奇:欢迎毛圣博加入奇绩,成为奇绩创坛合伙人
  8. 苹果 Mac 电脑将采用自研芯片、App Store 上线“小程序”,WWDC20 为开发者带来了什么 ?
  9. 新冠全球蔓延,AI+大数据拿什么拯救全人类? | AI 技术生态论
  10. 企业微信再次升级;滴滴网约车欲加装防护隔离膜;Firefox 73发布 | 极客头条