程序猿都非常懒,你懂的!

近期在开发中,须要用到server的ip和mac信息。可是server是架设在linux系统上的,对于多网口,在获取ip时就产生了非常大的问题。以下是在windows系统上,java获取本地ip的方法。贴代码:

package com.herman.test;

import java.net.InetAddress;
/**
* @see 获取计算机ip
* @author Herman.Xiong
* @date 2014年5月16日 09:35:38
*/
public class Test {
public static void main(String[] args) {
test0();
} /**
* @see 获取windows系统上的ip(单网卡)
* @author Herman.Xiong
* @date 2014年5月16日 09:36:29
*/
public static void test0(){
try {
InetAddress addr = InetAddress.getLocalHost();
String ip=addr.getHostAddress().toString();//获得本机IP
String address=addr.getHostName().toString();//获得本机名称
System.out.println("获得本机IP:"+ip);
System.out.println("获得本机名称:"+address);
} catch (Exception e) {
e.printStackTrace();
}
}
}

获取具体信息,贴代码:

/**
* @see 获取windows系统上网卡信息
* @author Herman.Xiong
* @date 2014年5月16日 10:17:30
*/
@SuppressWarnings("unchecked")
public static void test1(){
Enumeration netInterfaces = null;
try {
netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
System.out.println("DisplayName:" + ni.getDisplayName());
System.out.println("Name:" + ni.getName());
Enumeration ips = ni.getInetAddresses();
while (ips.hasMoreElements()) {
System.out.println("IP:"+ ((InetAddress) ips.nextElement()).getHostAddress());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

执行效果图:

好吧,看看上面的打印,你就知道了,有多个ip,并且在linux上的情况更复杂。这样的比較麻烦的情况,被我排除了,我使用了一种新的方法,就是linux上的shell脚本。语法代码例如以下:

#linux中的shell脚本的学习(so easy)
#1.凝视
#在进行shell编程时,以#开头的句子表示凝视,直到这一行的结束。
#我们真诚地建议您在程序中使用凝视。假设您使用了凝视,
#那么即使相当长的时间内没有使用该脚本,您也能在非常短的时间内明确该脚本的作用及工作原理。 #2变量
#在其它编程语言中您必须使用变量。在shell编程中,全部的变量都由字符串组成,而且您不须要对变量进行声明。要赋值给一个变量,您能够这样写:
#变量名=值
#取出变量值能够加一个美元符号($)在变量前面: #hello world
#!/bin/sh
#对变量赋值:
hw="hello world"
# 如今打印变量hw的内容:
echo "变量hw的值为:"
echo $hw

一下是获取ip的shell脚本代码:

#!/bin/bash
#get net export
network=`cat /nac/config/nac_sys.conf | grep "manager"|awk '{print $2}'`
#get net export local ip
ifconfig $network|egrep "inet addr:"|cut -d ":" -f2|awk '{print $1}'

脚本vi写好了,随便放一个位置。然后用java调用,一下是java在linux上调用shell脚本的命令:

/**
* @see 运行脚本获取linux上的ip
* @author Herman.Xiong
* @date 2014年5月16日 10:33:23
* @return
*/
public static String execShell(){
String ip="";
// 获取当前程序的运行进程对象
Runtime runtime = Runtime.getRuntime();
// 声明处理类对象
Process process = null;
// 返回行信息
// 输入流
InputStream is = null;
// 字节流
InputStreamReader isr = null;
// 缓冲流
BufferedReader br = null;
// 结果
try {
// 运行PING命令
process = runtime.exec("/var/script/herman.sh");
// 实例化输入流
is = process.getInputStream();
// 把输入流转换成字节流
isr = new InputStreamReader(is);
// 从字节中读取文本
br = new BufferedReader(isr);
String line="";
while ((line = br.readLine()) != null) {
ip+=line;
}
is.close();
isr.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
runtime.exit(1);
}
return ip;
}

OK,一切大功告成。

欢迎大家关注我的博客,如有疑问,请加qq群

135430763

进行共同学习!

linux下的shell命令的编写,以及java怎样调用linux的shell命令(java怎样获取linux上的网卡的ip信息)的更多相关文章

  1. Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本的操作方法【转】

    在日常运维工作中, 经常会碰到以秒为单位去定时执行某些命令或监控脚本的需求. 说到定时任务就要用到crontab,通常来说,crontab的最小单位是分钟级别,要想实现秒级别的定时任务,就要进行特殊设 ...

  2. (转载)linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    linux下tar.gz.tar.bz2.zip等解压缩.压缩命令小结 bz2 tgz z等众多压缩文件的压缩与解压方法,需要的朋友可以参考下 1) Linux下最常用的打包程序就是tar了,使用ta ...

  3. Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)

     Eclipse.MinGW.JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法) 问题背景:之前的JNI编程都是基于And ...

  4. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  5. Linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结(转)

    本文介绍了linux下的压缩程式tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar等程式,以及如何使用它们 ...

  6. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令

    转至:http://www.jb51.net/LINUXjishu/43356.html 说明:Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令 ...

  7. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结(转载)

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  8. 【Linux】linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  9. [转]linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    原文:http://www.jb51.net/LINUXjishu/43356.html ------------------------------------------------------- ...

随机推荐

  1. Data Binding(数据绑定)用户指南

    1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它 ...

  2. HTML5全球普及加速:有望终结iOS与安卓界限【转】

    HTML5或将成为未来移动互联网时代的颠覆者. 5年前,当第一台iPhone诞生时,乔布斯断然拒绝了FlashPlayer,而选择HTML5(新型网页标准)取代Flash的功能.他曾预言,“虽然现阶段 ...

  3. mysql中出现的Data truncated for column

    mysql中想一个数据库中插入一条记录时,有可能因为好多原因,会出现Data truncated for column XXXXX的错误,这是因为你的数据类型的长度不一致导致的,仔细查看一下数据类型的 ...

  4. ajax-Ajax试题

    ylbtech-doc:ajax-Ajax试题 Ajax 1.A,Ajax试题返回顶部 001.{Ajax题目}使用Ajax可带来便捷有()(选择3项)      A)减轻服务器的负担      B) ...

  5. (原创)LAMP教程6-使用SecureCRTPortable工具远程连接centos

    (原创)LAMP教程6-使用SecureCRTPortable工具远程连接centos 是的,今天老柯就给大家介绍一款可以远程连接centos的工具,是的这个就是目前,最夯实的,最多人使用的Secur ...

  6. Tour

    题意: 给n个点的坐标,求形成的最短的闭合回路. 分析: 经典问题,dp[i][j]表示有1-i点再由j回到1点的最短距离,i点有两种情况,在去的路径上 dp[i][j]=min(dp[i][j],d ...

  7. Educational Codeforces Round 15 套题

    这套题最后一题不会,然后先放一下,最后一题应该是大数据结构题 A:求连续最长严格递增的的串,O(n)简单dp #include <cstdio> #include <cstdlib& ...

  8. 《Python CookBook2》 第一章 文本 - 去字符串两端的空格 && 合并字符串 && 将字符串逐字符或者逐词反转

    去字符串两端的空格 任务: 获得一个开头和末尾都没有多余空格的字符串. 解决方案: 字符串对象的lstrip.rstrip和strip 方法正是为这种任务而设计的.这几个方法都不需要参数,它们会直接返 ...

  9. IOS-day02_OC中类的声明

    在上一个笔记中类的使用中,在编译链接的时候会有警告,原因就是我们没有对类进行声明 类的声明如下:使用关键字@interface #import <Foundation/Foundation.h& ...

  10. 多线程下OpenCV操作的问题

    问题:在OpenCV中,使用cvCaptureFromAVI打开一个视频文件后,并使用cvReleaseCapture释放关闭它后.再开启一个线程使用cvCaptureFromAVI打开一个视频文件, ...