linux機器上執行ping命令的java方法
在編寫網管系統的過程中,經常需要判斷某臺機器是否可用,於是採用使用ping機器的方法判斷該機器當前是否可用,方法如下:
/** * @Title: execPingCommand * @Description: 執行ping命令,檢視裝置是否可用 * @param @param deviceIp * @return boolean true-能ping通,false-不能ping通 * @throws */ public static boolean execPingCommand(String deviceIp) { logger.debug("enter VolumeManage.execPingCommand(String deviceIp)"); boolean networkUseable = false; // String address="www.javawind.net"; Process process = null; try { process = Runtime.getRuntime().exec("ping -c 3"+ deviceIp); } catch (IOException e1) { logger.error("System error:", e1); } InputStreamReader r = new InputStreamReader(process.getInputStream()); LineNumberReader returnData = new LineNumberReader(r); String returnMsg =""; String line =""; try { while ((line = returnData.readLine()) != null) { // System.out.println(line); returnMsg += line; } if (returnMsg.indexOf("Unreachable") != -1 || returnMsg.indexOf("100% packet loss") != -1) { networkUseable = false; } else { networkUseable = true; } } catch (IOException e) { logger.error("System error:", e); } finally { if (returnData != null) { try { returnData.close(); } catch (IOException e) { // TODO Auto-generated catch block logger.error("System error:", e); } } if (r != null) { try { r.close(); } catch (IOException e) { // TODO Auto-generated catch block logger.error("System error:", e); } } } logger.debug("exit VolumeManage.execPingCommand(String deviceIp)" +"[networkUseable] ="+ networkUseable); return networkUseable; }
此方法關鍵命令為紅色部分:ping -c 3 + ip;這個命令為linux系統所有,windows上不能執行,表示方法執行之後,只需要返回3行響應訊息便可,不然在linux中,如果不終止該命令,會不停的列印響應的訊息。
ping通機器的響應訊息如下:
[[email protected] ~]# ping -c 3 192.168.3.51PING 192.168.3.51 (192.168.3.51) 56(84) bytes of data.64 bytes from 192.168.3.51: icmp_seq=1 ttl=64 time=14.6 ms64 bytes from 192.168.3.51: icmp_seq=2 ttl=64 time=0.332 ms64 bytes from 192.168.3.51: icmp_seq=3 ttl=64 time=0.359 ms
--- 192.168.3.51 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2000msrtt min/avg/max/mdev = 0.332/5.103/14.619/6.728 ms[[email protected] ~]#
ping不同的機器的響應訊息如下:
[[email protected] ~]# ping -c 3 192.168.3.52PING 192.168.3.52 (192.168.3.52) 56(84) bytes of data.From 192.168.7.181 icmp_seq=1 Destination Host Unreachable
--- 192.168.3.52 ping statistics ---3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2000ms, pipe 3[[email protected] ~]#
因此,方法根據這兩個條件進行判斷,如果含有Unreachable或者100% packet loss就表示機器ping不同,不可用,否則為可用。
相關推薦
linux機器上執行ping命令的java方法
在編寫網管系統的過程中,經常需要判斷某臺機器是否可用,於是採用使用ping機器的方法判斷該機器當前是否可用,方法如下: /** * @Title: execPingCommand * @Description: 執行ping命令,檢視裝置是否可用 * @param @param deviceIp
在多臺Linux機器上執行命令
Linux伺服器的管理員經常需要在多臺機器上執行相同的命令。我不是Linux管理員,可以今天就接了個活,檢查線上N臺機器的儲存是否都正確掛載了。N臺機器一個一個ssh登入上去,然後mount人肉看一下,也許30分鐘就搞定了。可是我是工程師,不能用這麼“土”的方式解決。網上搜
Linux C 程式執行 shell 命令並獲取返回結果的方法
據說有統計資料表明,程式碼的缺陷率是一定的,與所使用的語言無關。Linux提供了很多的實用工具和指令碼,在程式中呼叫工具和指令碼,無疑可以簡化程式,從而降低程式碼的缺陷數目。Linux shell 指令碼也是一個強大的工具,我們可以根據需要編制指
Linux系統下python程式碼執行shell命令的方法
方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os.popen(a,'w',1) print b 方法二:os.system #!/
java程式在eclipse上執行報錯解決方法:Exception in thread "main" java.lang.NoClassDefFoundError:
最近在Linux上的eclipse中執行java程式出現了這樣的錯誤,弄了很久用了以下三種方法終後終於成功運行了,分享下,希望能幫助到大家。 Linux執行java程式提示錯誤: Exception in thread "main" java.lang.NoClassDefFoundEr
eclipse匯出java程式並且移到linux系統上執行
解決問題:1 匯出java可執行jar包,並且執行。 2 解決想通過java開發小工具,糾結半天不知道怎麼把它弄到linux上面執行的問題 其實這篇文章沒有什麼很大意義,對開發老手來說不屑一顧。但是相信還是有很多跟我一樣的人,遇到同樣的問題。 貼
Docker在Windows上執行NetCore系列(一)使用命令控制檯執行.NetCore控制檯應用 Docker在Linux/Windows上執行NetCore文章系列
原文: Docker在Windows上執行NetCore系列(一)使用命令控制檯執行.NetCore控制檯應用 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 本篇文章作業系統資訊  
java web專案釋出到linux伺服器上執行出現亂碼
我們專案的開發是在windows下完成的。然後匯出.sql資料庫檔案,並匯出war包,準備部署到linux下的tomcat伺服器上。部署完成出現中文問題: 問題描述:1.資料庫中原有的資料都能正常顯示2.頁面顯示讀取出來出現亂碼問題的解決過程: 考慮流程:1、資料庫儲存格式
Linux上執行ActiveMQ命令
進入到linux中安裝ActiveMQ的位置,cd ../apache-activemq-5.15.2/bin activemq啟動分linux-x86-32和linux-x86-64 進入bin/linux-x86-64下: cd linux-x86-64/ 啟動
linux伺服器上執行java程式,引用外部jar包
將寫好的java程式放到Linux上執行,可以利用Linux伺服器更快的跑完程式。由於我windows和linux下使用的jdk版本不同,因此將windows的java程式打成jar包後在linux下執行總會報錯。於是只能在Linux下使用javac命令編譯生成class
[原]NDK程式在虛擬機器上執行出現signal 4 (SIGILL), fault addr 錯誤的原因及解決方法
終於到了移植的最後一步 ,但是編譯出來的SO檔案加入工程後在虛擬機器上總是無法執行,檢視DDMS發現報錯 03-14 10:43:08.623: INFO/DEBUG(28): signal 4 (SIGILL), fault addr 80a43224 03-14 10:
Linux系統下如何禁止ping命令或允許ping命令的方法
1、禁止ping echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all 2、允許ping echo 0 >/proc/sys/net/ipv4/
jar檔案在無java環境的機器上執行
最近做了一個小功能,幫行政的同事計算公司員工的缺勤和加班情況。使用後反映良好,於是一傳十十傳百,可是有些人拿到後傻眼了,為什麼我的機器執行不了呀…… 原來,他們的機器沒有java執行環境,而且有的是32位有的是64位,但有都不願意自己裝jdk…… 於是,我將
Linux系統中5種重複執行歷史命令的方法
Linux 下,如果要執行一條或多條之前輸過的指令,要怎麼處理?很多人會想到使用上下箭頭去翻查歷史輸入的命令。這當然是可以了,除了
windows linux 使用python執行系統命令並將結果保存到變量
rtc 2008r2 digg 系統 ng- shc down post drive 最近需要用到os.system 發現不能賦值到變量 後查有更新的模塊,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使
處理svn不能執行cleanup命令的方法
color cleanup alt vpd 死循環 image col images 不能 svn執行update的時候報錯: 按照提示執行cleanup操作,但是又報錯了,還是提示要執行cleanup,這下是進入死循環了。 在網上找了一下處理svn執行不了cleanup的
Linux系統上傳下載命令rz和sz
file escape yum 進制 二進制 -o -- sca code Linux系統簡單易用的上傳下載命令rz和sz yum install lrzsz -y 上傳(rz)-b, --binary:以二進制方式傳輸,推薦使用-e, --escape:對所有控制字符轉
虛擬機器上執行AntDesignPro
步驟: 1. 保證linux虛擬機器正常執行和訪問網路 2. 保證yum install git 正常 , 以及wget 命令正常 3. 正確安裝nodejs ,並能通過node -v 和npm -v檢驗正確安裝 ,通過npm 安裝yarn , 通過y
Linux不能執行netstat命令的原因及解決辦法
伺服器是阿里雲的,這是我出的錯,使用netstate命令報 -bash: netstate: command not found 出現這個錯誤的原因:由於網路工具沒有安裝 使用以下命令安裝即可: yum install net-tools 執行命令: netstat -
.net core 部署在Linux系統上執行的環境搭建總結
原文: .net core 部署在Linux系統上執行的環境搭建總結 安裝Linux用的是騰訊雲的centos7.5,需要安裝有環境有mysql5.7 .netcore2.1 nginx1.14 1.首先是mysql的安裝 我用的連結工具是putty,首先root登入系統