`
zmx955
  • 浏览: 19101 次
社区版块
存档分类
最新评论

简单的对 linux服务器服务检查的java程序

阅读更多
package com.Linux;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;
import org.apache.commons.net.telnet.TelnetClient;
import org.junit.Assert;


/**
* commons-net-2.0.jar是工程依赖包
*/

public class NetTelnet {
TelnetClient telnet = new TelnetClient();// 初始化Telnet客户端连接
private InputStream is;
private PrintStream out;

// telnet连接初始化需要的参数
private String ip;// 远端主机IP
private int port;// telnet连接的端口号
private String user;// 用户名
private String password;// 密码
private char promopt = '$';// 命令提示符 普通用户命令以$号结束

public NetTelnet(String ip, int port, String user, String password) {
this.ip = ip;
this.port = port;
this.user = user;
this.password = password;

initLink(ip, port, user, password, promopt);
}

private void initLink(String ip, int port, String user, String password,char promopt) {
try {
telnet.connect(ip, port);// 连接到远端主机
is = telnet.getInputStream();
out=new PrintStream(telnet.getOutputStream());

// 根据是否是root用户设置命令结束符号
this.promopt = user.equals("root") ? '#' : '$';
login(user, password);
} catch (SocketException e) {
	Assert.fail("可以ping通,但本机telent or xinetd服务没有启动");
} catch (IOException e) {
	Assert.fail("读取远程机器显示数据出错");
//e.printStackTrace();
}

}

// 登陆主机
private void login(String user, String password) {
	
	try {
		Thread.sleep(10000);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		//System.out.println("Timeout");
		Assert.fail("连接超时");
	}
readUntil("login:");// 得到远端发来的是输入用户名的指令
write(user);// 输入用户名
readUntil("Password:");
write(password);
readUntil(promopt + "");// 注意这种转化类型的用法

}

// 获取远端主机发送来的指令
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char read = (char) is.read();
while (true) {
sb.append(read);
if (read == lastChar) {
if (sb.toString().contains(pattern)) {
return sb.toString();
}
}
read = (char) is.read();
}
} catch (IOException e) {
e.printStackTrace();
}

return "出错鸟";

}

// 用户发送过去的指令或者数据
public void write(String value) {
out.println(value);  
        out.flush();  

}

// 向远程主机发送命令
public String sendCommand(String command) {
write(command);
return readUntil(promopt + "");
}

// 关闭连接
public void disConnect() {
try {
telnet.disconnect();
} catch (IOException e) {
//e.printStackTrace();
	Assert.fail("关闭连接出错");
}
}

//public static void main(String[] args) {
//try {
//	
//System.out.println("启动Telnet...");
//String ip = "192.168.50.148";
//int port = 23;
//String user = "root";
//String password = "11111111";
//NetTelnet telnet = new NetTelnet(ip, port, user, password);
//System.out.println("已经连接上");
//telnet.sendCommand("ps -ef |grep memcached");
//
//String r1 = telnet.sendCommand("ps -ef |grep memcached");
//String r2 = telnet.sendCommand("ps -ef |grep nginx");
//String r3 = telnet.sendCommand("ps -ef |grep php-fpm");
////String rnginx =telnet.sendCommand("ps -C nginx");
////ps -C nginx|cut -c25- (只显示一列)
//String rnginx =telnet.sendCommand("ps -C nginx|awk -- '{print $4}'");
//
//System.out.println("显示结果");
//rnginx=rnginx.trim();
//if(rnginx.contains("ngin1")){
//	System.out.println("包含");
//}
//System.out.println(rnginx);
////System.out.println(r2);
////System.out.println(r3);
//telnet.disConnect();
//} catch (Exception e) {
//e.printStackTrace();
//}
//}



} 


package com.Linux;

import java.net.InetAddress;


import org.junit.Test;

import static org.junit.Assert.assertThat;

import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.core.StringContains.containsString;

public class Check50_148 {
	@Test
	public void Service5_148(){	
		try {
            InetAddress address = InetAddress.getByName("192.168.5.148");
            assertThat("Ping不通", true, is(address.isReachable(5000)));
        } catch (Exception e) {
            e.printStackTrace();
        }
		System.out.println("启动Telnet...");
		String ip = "192.168.50.148";
		int port = 23;
		String user = "root";
		String password = "11111111";
		NetTelnet telnet = new NetTelnet(ip, port, user, password);
		System.out.println("已经连接上,开始进行服务检查");
		
		String All =telnet.sendCommand("ps -A|awk -- '{print $4}'");
		assertThat("xinetd服务没起来",All, containsString("xinetd\r\n"));
		assertThat("nginx服务没起来",All, containsString("nginx\r\n"));
		assertThat("sshd服务没起来",All, containsString("sshd\r\n"));
		assertThat("redis-server服务没起来",All, containsString("redis-server\r\n"));
		assertThat("php-fpm服务没起来",All, containsString("php-fpm\r\n"));
		assertThat("mysqld服务没起来",All, containsString("mysqld\r\n"));
		assertThat("memcached服务没起来",All, containsString("memcached\r\n"));
		System.out.println("检查完毕无异常");
	}
}




这事一个简单的对 linux服务器服务检查的程序
需要引入commons-net-3.1.jar , junit4.10.jar , hamcrest-core-1.3.jar , hamcrest-library-1.3.jar 第一个必须导入,后面3个如果不需要 assertthat断言的话可以去掉
分享到:
评论

相关推荐

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    结合以上代码,你可以实现一个完整的Java程序,通过输入Linux服务器的用户名、密码、主机地址和要执行的命令,远程登录并执行命令。如果你有密钥对认证的需求,可以使用`session.setUserInfo(UserInfo)`接口并实现其...

    Java 服务器信息监控

    综上所述,Java 服务器信息监控项目涵盖了服务器运维中的核心监控功能,通过对CPU、内存、网络和服务的监控,可以帮助管理员及时发现和处理问题,保障系统的高效稳定运行。通过持续改进和扩展,这样的监控系统能够为...

    linux下运行java程序

    在Linux环境下运行Java程序是许多开发人员日常工作中的一部分。Linux以其稳定性和安全性成为了服务器平台的首选,而Java作为跨平台的编程语言,其程序在Linux上运行同样具有广泛的应用。这篇博文将深入探讨如何在...

    linux服务器找到占用cpu高的java代码的办法

    在Linux服务器环境中,Java应用程序可能由于各种原因导致CPU使用率过高,这可能会影响系统的整体性能。要找到占用CPU高的Java代码,我们可以采取一系列步骤来诊断和优化问题。以下是一种详细的方法: 1. **查看系统...

    linux 通过脚本执行java程序

    在Linux环境中,通过脚本执行Java程序是一种常见的实践,尤其对于服务器端应用或者自动化任务来说。这使得我们能够更方便地管理和控制Java应用程序的启动、停止以及监控。下面将详细介绍如何编写一个简单的bash脚本...

    Linux系统所需java.zip

    最后,刷新环境变量并检查Java版本以确认安装成功: ```bash source ~/.bashrc java -version ``` 在Linux上安装和配置Java 1.8是一项基础但至关重要的任务,因为许多服务器端应用和服务依赖于Java运行。理解这一...

    Linux服务器+java+jdk+rpm

    6. **测试运行**:现在你可以尝试编写一个简单的Java程序,然后使用`javac`编译并用`java`运行它,以确保JDK工作正常。 7. **管理JDK版本**:如果你的系统中已经存在其他版本的JDK,可能需要管理多个版本。可以通过...

    阿里云Linux服务器配置及问题解决.docx

    阿里云Linux服务器配置是搭建和运行Java、MySQL等应用程序的基础步骤。本文将详细介绍如何配置Linux环境,包括连接服务器、安装Java、JDK以及MySQL,并解决常见的问题。 首先,要连接到阿里云Linux服务器,可以使用...

    linux环境 java 1.8安装包

    在Linux环境中安装Java 1.8是开发和运维工作中的常见任务,对于使用Java作为主要开发语言的项目尤其重要。本文将详细介绍如何在Linux...理解并熟练掌握这些步骤将有助于确保顺利地在Linux服务器上部署和运行Java应用。

    Java向Linux服务器发送指令所需的jar

    在IT领域,有时候我们需要...通过这种方式,Java程序员可以轻松地在应用程序中实现对远程Linux服务器的自动化管理和控制,极大地提高了工作效率。不过,要注意的是,这种能力也需要谨慎使用,避免不必要的安全风险。

    Linux服务器运行环境配置文档

    Linux服务器运行环境配置文档主要涉及了四个关键组件:Apache、Tomcat、PHP和Java,这些都是在服务器上搭建Web应用程序和服务的基础。以下是对这些组件详细配置的概述: 1. **Apache**: Apache HTTP Server是...

    SFTP定时扫描本地文件上传到Linux服务器

    在描述中提到的实现方式是通过编写Java程序来创建一个SFTP客户端,该客户端可以定时扫描本地文件系统以检查新文件或已完成的文件。这里涉及的Java编程技术可能包括: 1. **Java SFTP库**:如JSch(Java Secure ...

    deploy_java_win服务器jar发布程序_

    1. **环境准备**:确保服务器上安装了Java Development Kit (JDK),因为JRE(Java Runtime Environment)仅用于运行Java程序,而JDK还包含了编译和管理Java应用程序的工具,如`java`和`jar`命令。 2. **上传JAR文件...

    linux 服务器部署 redis Nginx 等

    Linux 服务器部署 Redis 和 Nginx 是一个常见的服务器架构, Redis 作为缓存服务器, Nginx 作为反向代理服务器,两者的组合可以提高服务器的性能和安全性。在本文中,我们将详细介绍如何在 Linux 服务器上部署 ...

    java 读取FTP服务器文件

    在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...

    linux服务器端口无法访问问题解决

    在Linux服务器环境中,当遇到80端口无法访问的问题时,需要进行一系列的排查步骤来定位和解决问题。以下是一些关键的知识点: 1. **项目运行状态**:首先,确保服务器上部署的应用程序已经成功启动并运行。对于Java...

    linux下java环境的安装

    在Linux环境下配置Java环境并安装JDK以及Tomcat服务器是一项重要的技能,对于开发基于Java的应用程序至关重要。本文将详细介绍在Linux系统(以CentOS为例)上安装Java Development Kit (JDK) 和Apache Tomcat的过程...

    java FTP服务器文件上传下载,创建多级文件夹.zip

    Java FTP服务器文件上传下载是Java开发中常见的网络编程任务,主要涉及到FTP(File Transfer Protocol)协议的应用,用于在客户端和服务器之间传输文件。本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载...

    linux开机启动tomcat或者java程序

    在Linux系统中,为了实现自动在开机时启动Tomcat或Java程序,我们需要了解一些关键的知识点,包括系统服务管理、脚本编写以及环境配置。以下将详细解释如何操作。 首先,Tomcat是一个流行的开源Java应用服务器,而...

    Java应用服务器 Tomcat

    Java应用服务器Tomcat是Java开发领域中不可或缺的一部分,它是一个开源、轻量级的Web应用服务器,主要用于运行基于Java Servlet和JavaServer Pages(JSP)技术的Web应用程序。由Apache软件基金会开发并维护,Tomcat...

Global site tag (gtag.js) - Google Analytics