package com.tievd.jyz.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; /** * @author zhangliang * @date 2022/9/5 17:01 */ public class PingUtil { private static Logger logger = LoggerFactory.getLogger(PingUtil.class); /**ping ipaddress 完整返回信息*/ public static String executeLinuxCmd(String ipAddress, int pingTimes, int timeOut) { Runtime run = Runtime.getRuntime(); String pingCommand; try { String osName = System.getProperty("os.name"); if(osName.contains("Windows")){ pingCommand = "ping " + ipAddress + " -n " + pingTimes + " -w " + timeOut; }else{ pingCommand = "ping " + " -c " + "4" + " -w " + "2 " + ipAddress; } Process process = run.exec(pingCommand); InputStream in = process.getInputStream(); BufferedReader bs = new BufferedReader(new InputStreamReader(in, Charset.forName("GBK"))); StringBuffer out = new StringBuffer(); String content = null; while ((content = bs.readLine()) != null) { out.append(content + "\n"); } in.close(); process.destroy(); return out.toString(); } catch (IOException e) { e.printStackTrace(); } return null; } /**ping ipaddress 完整返回true在线 false离线*/ public static boolean ping(String ipAddress, int pingTimes, int timeOut) { BufferedReader in = null; String pingCommand; Runtime r = Runtime.getRuntime(); String osName = System.getProperty("os.name"); if(osName.contains("Windows")){ pingCommand = "ping " + ipAddress + " -n " + pingTimes + " -w " + timeOut; }else{ pingCommand = "ping " + " -c " + "6" + " -w " + "10 " + ipAddress; } try { Process p = r.exec(pingCommand); if (p == null) { return false; } in = new BufferedReader(new InputStreamReader(p.getInputStream(),Charset.forName("GBK"))); int connectedCount = 0; String line; while ((line = in.readLine()) != null) { connectedCount += getCheckResult(line,osName); } return connectedCount >= 1 ? true : false; } catch (Exception ex) { ex.printStackTrace(); //出现异常则返回假 return false; } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } private static int getCheckResult(String line,String osName) { if(osName.contains("Windows")){ if(line.contains("TTL=")){ return 1; } }else{ if(line.contains("ttl=")){ return 1; } } return 0; } }