Linuxshellmac地址转换convertwithsed

来源:http://www.sh-fengwen.com 作者:驱寒暖身 人气:159 发布时间:2019-09-02
摘要:Linuxshellmac地址转换convertwithsed 美高梅游戏平台网站,把 0024.b20b.693f 地址 转换成 00:24:b2:0b:69:3f 电子游戏美高梅网址,1.点号分隔的 [[email protected] ~]# echo "0024.b20b.693f" | sed -r 's/

Linuxshellmac地址转换convertwithsed

美高梅游戏平台网站,把 0024.b20b.693f 地址 转换成 00:24:b2:0b:69:3f

电子游戏美高梅网址,1.点号分隔的

[[email protected] ~]# echo "0024.b20b.693f" | sed -r 's/b(..)(..)b/1:2/g;s/./:/g'
00:24:b2:0b:69:3f

2.若是冒号分隔的,把 0024:b20b:693f 转换成 00:24:b2:0b:69:3f 最后的. 替换成:可以去掉了;

[[email protected] ~]# echo "0024:b20b:693f" | sed -r 's/b(..)(..)b/1:2/g'
00:24:b2:0b:69:3f

3.-r 扩展正则表达式的另一种匹配方法

[[email protected] ~]# echo "0024.b20b.693f" | sed -r 's/b([0-9af]{2})([0-9a-f]{2})b/1:2/g;s/./:/g'
00:24:b20b:69:3f
[[email protected] ~]#

 

把 0024.b20b.693f 地址 转换成 00:24:b2:0b:69:3f 1.点号分隔的 [[email protected] ~]# echo 0024.b20b.693f | sed -r s/b(.....

gethostbyname/gethostbyaddr

均用于IPv4中, 第一个通过域名查ip地址, 第二个通过ip地址反向查询域名.
不过需要注意的反向查询需要本地有反射解析服务, 或者说本地的etc/hosts文件中有相应的记录

#include <netdb.h>
struct hostent *gethostbyname(const char *hostname);
struct hostent *gethostbyaddr(const char *addr,socklen_t len,int family);


struct hostent{
    char *h_name;   //域名

    char **h_aliases; //别名

    int h_addrtype;  //AF_INET

    int h_length; // 4

    char **h_addr_list; //域名对应的IPv4地址链

}

gethostbyname的参数是域名的字符串
gethostbyaddr的第一个参数是IPv4地址的二进制字符串

#include "unp.h"
#include <netdb.h>

int main(int argc, char *argv[])
{
    char *ptr,**pptr;
    char str[INET_ADDRSTRLEN];
    struct hostent *hptr;

    while(--argc > 0){
        ptr = *++argv;
        if((hptr=gethostbyname(ptr)) == NULL){
            printf("gethostbyname error for host: %s: %s",
                    ptr,hstrerror(h_errno));
            continue;
        }
        printf("official hostname: %sn",hptr->h_name);

        for(pptr=hptr->h_aliases;*pptr != NULL;pptr++)
            printf("talias: %sn",*pptr);
        switch(hptr->h_addrtype){
            case AF_INET:
                pptr=hptr->h_addr_list;
                for(;*pptr != NULL;pptr++)
                    printf("taddress: %sn",inet_ntop(hptr->h_addrtype,*pptr,str,sizeof(str)));
                break;
            default:
                printf("unknown address typen");
                break;
        }
    }
    return 0;
}

#include "unp.h"
#include <netdb.h>

int main(int argc, char *argv[])
{
    char *ptr,**pptr;
    char str[INET_ADDRSTRLEN];
    struct hostent *hptr;
    struct in_addr *addr;
    struct sockaddr_in saddr;

    while(--argc > 0){
        ptr = *++argv;
        if(!inet_aton(ptr,&saddr.sin_addr))
            err_quit("inet_aton error");

        if((hptr=gethostbyaddr((void *)&saddr.sin_addr,sizeof(struct in_addr),AF_INET)) == NULL)
            err_quit("gethostbyaddr error:%s %s ",ptr, hstrerror(h_errno) );

        printf("official hostname: %sn",hptr->h_name);

        for(pptr=hptr->h_aliases;*pptr!=NULL;pptr++)
            printf("talias: %sn",*pptr);

        switch(hptr->h_addrtype){
            case AF_INET:
                pptr=hptr->h_addr_list;
                for(;*pptr != NULL;pptr++)
                    printf("taddress:%sn",
                            inet_ntop(hptr->h_addrtype,*pptr,str,sizeof(str)));
                break;
            default:
                puts("unknown address typen");
                break;
        }
    }
    return 0;
}

本文由美高梅游戏平台网站发布于驱寒暖身,转载请注明出处:Linuxshellmac地址转换convertwithsed

关键词:

上一篇:Linux下搭建FTP服务器

下一篇:没有了

最火资讯