当前位置:  技术问答>linux和unix

shell编程如何取得本机IP地址并存入一个变量中

    来源: 互联网  发布时间:2015-01-11

    本文导语:  请各位大拿多多赐教。如果本机有多个IP地址,如何取得当前正在使用的IP地址(即正在当前局域网内使用的网段的IP地址) | #include  #include  #include  #include  #include  #include  #include  #include ...

请各位大拿多多赐教。如果本机有多个IP地址,如何取得当前正在使用的IP地址(即正在当前局域网内使用的网段的IP地址)

|
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define DEBUG 1

struct  tm tmn;
time_t  now;

int main(int argc,char *argv[])
{
int sockfd;
char SOCKIP[15];
char SOCKPORT[6];
char MyName[20];
char MSG[MAXMSG];
char *IP, *hostname, *ptr;
struct hostent *HostIP;
struct sockaddr_in dest;
struct in_addr inip;

/* 得到该运行程序所在主机的主机名称 */
if( gethostname(MyName,sizeof(MyName))h_name;
inip.s_addr=*((unsigned long *)HostIP->h_addr_list[0]);

if(!(ptr=(char *)inet_ntoa(inip)))
memcpy(&inip,HostIP->h_addr,HostIP->h_length);

#if DEBUG
printf("My IP is %sn",ptr);
#endif

return 0;
}

|
这里假设
'当前正在使用的IP地址' 是 指与 缺省路由地址 同网段的地址
(vv 变量中是缺省路由地址前3位,ipaddress 是结果)

你看看对不对,我在一台sco unix 5双网卡机器上试了可以。
 
vv=`netstat -rn|grep default |awk '{ print $2}'|awk -F'.' '{printf("%d.%d.%d",$1,$2,$3);}'`

ipaddress=`netstat -rn|grep "UC " |awk -v aa=$vv 'match($2,aa){ print($2)}'`
echo $ipaddress

|
一般主机HOST表里面都有一个IP地址和主机名称的对应关系的,如:

10.110.10.110        myhost

这样可不可以呢:

grep `hostname` /etc/hosts |awk '{print $1}'

可能是问题是:
    如果主机名称对应的域有多个和`hostname`相匹配的话,得到的IP地址就是多个了。

不能够用C吗!?

|
继续取第二个地址HostIP->h_addr_list[0]);直到返回为空为止。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • shell变量和子shell的问题请教
  • shell编程,如何将变量中的环境变量转换为绝对值
  • 怎么查看自己的shell的环境变量,和root的环境变量,solaris系统
  • 子shell改变父shell定义变量的值
  • gdb下用shell写环境变量的问题
  • 关于shell变量传递问题?
  • 如何查看当前shell的所有环境变量?
  • 请问如何在C语言中获得shell 变量
  • 请教个shell环境变量的问题
  • Shell编程中如何获取环境变量中设置的路径
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • [linux shell] 如何获得以一个变量的值为名的变量的值
  • 请问一个关于shell变量的简单问题
  • 急急急!!!!!!用B shell如何实现截取变量的子串?
  • unix shell中能否将后台运行程序的输出保存到变量中?
  • 程序中如何使用setenv或者export配置环境变量在当前shell生效
  • 为什么我的系统看不到shell,home变量?
  • 怎样用shell读取properties里面某个键对应的值,再赋值给shell中的变量
  • redhat7.2下怎么在shell文件中以变动日期做为变量?急!!
  • shell脚本的变量问题
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • 请问“当前shell”和“子shell”的区别?
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3