linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的!

最近在开发中,需要用到服务器的ip和mac信息。但是服务器是架设在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信息),布布扣,bubuko.com

时间: 2024-10-09 15:44:54

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

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

linux下tar.gz.tar.bz2.zip等解压缩.压缩命令 Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法:  tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下:  # tar -cf all.tar *.jpg  这条命令是将所有.jpg的文件打成一个名为all.tar

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

linux下tar.gz.tar.bz2.zip等解压缩.压缩命令小结 bz2 tgz z等众多压缩文件的压缩与解压方法,需要的朋友可以参考下 1) Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进  行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下: # tar -cf all

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

linux下tar gz bz2 tgz z等众多压缩文件的压缩与解压方法,需要的朋友可以参考下 Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法:  tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下:  # tar -cf all.tar *.jpg  这条命令是将所有.jpg的

LINUX下奇异的脚本重编写,解决脚本无法执行

***********************************************声明**********************************************  原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 表述有错误之处,请您留言或邮件([email protected])指明,不胜感激. 本文转载必须保留此处:http://blog.csdn.net/huangyanlong/article/det

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

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下: # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包.-c是表示产生新的包 ,-f指定包的文件名. # tar -rf a

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

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下: # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包.-c是表示产生新的包 ,-f指定包的文件名. # tar -rf a

linux下集成脚启动本编写——Rabbitmq mysql redis apache

集成启动服务脚本设计 ... 12 总体思路需求 根据计算机系统启动顺序,启动项的优先级设定 1):rabbitMQ    2):mysql     3):redis      4):tomcat 2:对磁盘空间检测结果是否达到一定容量,达到后,就不启动相应程序(如:mysql) if 执行启动脚本过程中,依照启动项依赖强度,决定后续依赖是否启动(例:mysql不能启动,后续tomcat启动脚本就不执行) if 集成脚本命名 ramr (rabbit apache mysql   redis)

linux下Bash函数功能之编写脚本(十一)

1.脚本编程之函数: function: 结构化编程,不能独立运行,需要调用时执行,可以被多次调用 格式1: function 函数名 { 语句 ... } 格式2: 函数名() { 语句 ... } 2.调用函数执行状态返回值: 格式:return 数值,数值在0-255之间 3.使用函数完成判断用户是否存在的脚本 3.1.函数能够接受一个参数,参数为用户名: 如果用户存在,返回正常状态值: 如果用户不存在,返回错误状态值: 3.2.在主程序中调用函数:如果用户存在,显示用户的shell和UI

Linux下快速删除输错的密码技巧(快速删除输入的命令)

1.[Esc]+[退格键(Backspace)] 2.[Ctrl]+[U] 说明:以上两个快捷键都会删除全部输错的命令或密码. 参考: http://blog.csdn.net/u013895662/article/details/37995279