shell脚本之通过脚本获取本机IP地址

通过shell脚本获取主机ip地址,并从程序中读取执行shell脚本执行的结果

脚本命令及释义

#/bin/bash
ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
  • ifconfig -a

用于类unix系统获取主机网络信息的指令;

  • grep inet

用于查找跟inet相关项

  • grep -v xxx

去除跟xxx相关项,-v表示反选

  • awk ‘{print $2}’

选择结果中以空格分隔的第二项

  • tr -d “addr:”

删除"ddr:"字符串

通过程序执行shell脚本并获取其输出的ip地址

执行shell脚本的三种方式

1.通过system函数调用
2.通过exec函数族调用
3.通过popen函数
由于前两种方法需要自己将函数调用shell脚本的输出重定向到另一个文件中,再读取文件内容获取结果,这里选择第三种方法,通过popen函数来执行shell脚本,获取到ip地址。关于popen函数的用法这里不再赘述,网上资料很多,需要注意的是popen打开的是单向的只读或只写的I/O流
代码如下:

#include 
#include 
#include 

#define MODE_IPV4 0//该模式返回IPV4地址
#define MODE_IPV6 1
#define IPV4 "ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d \"addr:\""      
#define IPV6 "ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet4|awk '{print $2}'|tr -d \"addr:\""
#define INFO printf

enum
{
   
	MODE_CMD = 0,    

你可能感兴趣的:(shell脚本,linux,linux)