`
ckf53390
  • 浏览: 28434 次
文章分类
社区版块
存档分类
最新评论

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<Integer, String> map;

 public TreeMap<Integer, String> getMap() {
  return map;
 }

 public void setMap(TreeMap<Integer, String> 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<Integer, String> map = new TreeMap<Integer, String>();
  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<Integer, String> map = new TreeMap<Integer, String>();
  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<Integer, String> map = new TreeMap<Integer, String>();
  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<Integer, String> map = new TreeMap<Integer, String>();
  //执行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<Integer, String> map = new TreeMap<Integer, String>();
  //执行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();
 }
}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    telnet dubbo接口测试工具

    5. `start_隐藏窗口版.exe`:同样是Windows可执行程序,但运行时不会显示命令窗口,可能更适合自动化测试或后台运行。 6. `使用说明.txt`:提供了关于如何安装、配置和使用这个工具的详细指导,包括启动方式、参数...

    把java注册成服务

    7. **远程管理和自动化**:通过注册服务,还可以实现远程管理和自动化运维,例如通过SSH、telnet或者自定义脚本进行远程启动、停止服务。 8. **安全性与权限**:服务通常运行在特定的系统账户下,需要考虑账户权限...

    secureCRT 8.3.1 终端工具

    同时,学习使用脚本功能可以自动化一些重复性的任务,进一步提升工作效率。 总结,SecureCRT 8.3.1作为一款强大的终端工具,以其安全、高效和便捷的特点,成为了Windows平台下Linux后台开发者的首选。无论是基本的...

    用JAMES实现自己的邮件服务器.docx

    ### 使用JAMES构建个性化邮件服务器 #### 一、引言 随着互联网技术的发展,电子邮件作为信息传递的重要方式之一,其重要性不言而喻。在众多邮件服务器解决方案中,Apache James 以其高度可定制性和灵活性脱颖而出...

    java之linux

    - **环境变量和脚本编写**:Shell 还支持环境变量的设置和脚本语言的编写,使得自动化任务处理变得更加简单高效。 ##### 3. 文件系统 - **目录结构**:Linux 的文件系统通常采用树状结构,其中 `/` 表示根目录。 -...

    UNIX实验

    通过这些实验,用户将能深入理解UNIX系统的强大功能,提高其在实际工作中的操作技能,并且了解如何在UNIX环境下利用JAVA构建安全的应用。无论是对初学者还是有经验的UNIX用户,这样的实验都能提供宝贵的学习机会。

    电子商务选择题.doc

    【电子商务核心】 电子商务的核心是商务,即D项。它强调的是通过电子手段进行的商业活动,而不是...B2C网站后台管理功能涉及订单处理、库存管理、客户信息管理、销售数据分析等多个方面,确保网站正常运营和服务质量。

    Dubbo 30道面试题及答案.docx

    Dubbo 是阿里巴巴开源的一款高性能、轻量级的 Java RPC 框架,它主要解决了在服务化过程中面临的分布式系统的诸多问题,如服务治理、服务调用、通信协议、序列化方式等。以下是对 Dubbo 的一些核心知识点的详细解释...

    BEA dev2dev WebLogic管理精华

    5. **命令行部署**:使用WLST (WebLogic Scripting Tool)进行自动化部署。 #### 三、监控调优:提升WebLogic性能与稳定性 ##### 3.1 理解JVM的垃圾收集机制 垃圾收集(Garbage Collection, GC)是JVM的关键功能之...

    Firebase云通知

    这些消息可以是单播(一对一)、多播(一对多)或者基于话题的消息,用于实时通知、消息传递或者后台数据同步。在本项目中,你将发现如何利用FCM来实现云通知的发布与接收。 首先,FCM的集成通常涉及到以下几个步骤...

    Zabbix4.0的中文用户手册

    - **自动化报警:** 实现自动化的报警机制。 **11.2 方案示例** 1. **网络设备监控方案:** 对路由器、交换机等进行监控。 2. **服务器性能监控方案:** 关注CPU、内存、磁盘等指标。 3. **数据库监控方案:** ...

    Mcafee8.5i教程

    禁止使用NetMeeting功能访问远程桌面 禁止“私自指定某些程序在指定的时间运行” 禁止在C盘中新建任何PIF文件 禁止私自修改本地用户帐户数据库 禁止在Default User目录下新建任何文件 禁止在LocalService目录下新建...

    linux_tools

    在IT领域,Linux工具是操作系统的核心组成部分,它们为用户提供了丰富的功能,涵盖了系统管理、文件操作、网络通信、进程控制等多个方面。Linux以其开源、稳定和高效的特点,被广泛应用于服务器、开发环境以及嵌入式...

    BAT面试题大全进大厂必看358页精品,2022年最新资源,助您斩获offer!

    Dubbo是一个高性能、轻量级的Java RPC框架,由阿里巴巴开发并维护,广泛应用于大型互联网公司,如BAT(百度、阿里巴巴、腾讯)等。了解和掌握Dubbo的相关知识对于进入大厂面试至关重要。 1. **为什么要用Dubbo?** ...

    世界排名前6的杀软mcafee8.5i企业版

    禁用termsrv.dl 禁止使用NetMeeting功能访问远程桌面 禁止“私自指定某些程序在指定的时间运行” 禁止在C盘中新建任何PIF文件 禁止私自修改本地用户帐户数据库 禁止在Default User目录下新建...

    Solaris培训文档pdf

    - **软件体系**:Sun 不仅在硬件领域有所建树,在软件方面也有诸多贡献,最著名的当属 Java 编程语言。此外,Sun 还开发了 Solaris 操作系统,这是一种基于 UNIX 的系统,广泛应用于服务器领域。 #### 二、PROM ...

    2021-2022计算机二级等级考试试题及答案No.18071.docx

    - **知识点概述**:在Windows操作系统中,即使应用程序窗口被最小化,程序仍然在后台运行。 - **正确答案解析**:根据题目,正确答案是**错误**。 ### 19. VCD播放技术 - **知识点概述**:播放VCD采用了多媒体技术...

    2021-2022计算机二级等级考试试题及答案No.3831.docx

    - **知识点概述**:Visual FoxPro 6.0是一款流行的关系型数据库管理系统,其主界面包含多个菜单项用于实现不同的功能。 - **解析**:在Visual FoxPro 6.0的主界面中,菜单栏包括了诸如“文件”、“编辑”、“视图”...

Global site tag (gtag.js) - Google Analytics