자신 IP 얻어내기 (Linux 버전)

purewell의 이미지

윈도우즈 버전에 이은 리눅스 버전입니다.

//------------------------------------------------------------------------------ 
// 
// Get machine ip addresses by sockaddr for sockaddr_in/sockaddr_in6. 
// 
// AUTHOR  : Yubin Lim 
// DATE    : 2004-11-05 
// EMAIL   : purewell at purewell dot biz 
// REQUIRE : Linux,
//                  GNU C/C++ Compiler
// 
//------------------------------------------------------------------------------ 


# include <sys/types.h>
# include <sys/socket.h>
# include <sys/select.h>
# include <sys/ioctl.h>
# include <netdb.h>
# include <netinet/in.h>
# include <netinet/tcp.h>
# include <arpa/inet.h>
# include <pthread.h>
# include <unistd.h>
# include <sys/epoll.h>
# include <net/if.h>
# include <linux/sockios.h>

static bool linux_getMyIP(int nFamily)
{
  int             sock;
  int             nRet;

  size_t          nNIC;
  const size_t    nMaxNIC = 256;

  struct ifconf   ifc;
  struct ifreq    ifr[nMaxNIC];

  struct sockaddr* pAddr(NULL);
  struct sockaddr_in addr4;
  struct sockaddr_in6 addr6;

  sock = socket(nFamily, SOCK_STREAM, 0);
  if ( sock == -1 ) return false;

  ifc.ifc_len = sizeof(ifr);
  ifc.ifc_ifcu.ifcu_req = ifr;

  nRet = ioctl(sock, SIOCGIFCONF, &ifc);
  if ( nRet == -1) return false;

  close(sock);

  nNIC = ifc.ifc_len / sizeof(struct ifreq);

  addr_buf.nIPVersion = nFamily;

  for ( size_t i = 0 ; i < nNIC; i ++ )
  {
    if ( nFamily == ifc.ifc_ifcu.ifcu_req[i].ifr_ifru.ifru_addr.sa_family )
    {
      // todo convert binary to string...
      // if nFamily is AF_INET then pAddr is struct sockaddr_in*.
      // else if nFamily is AF_INET6 then pAddr is struct sockaddr_in6*.
      pAddr = (&ifc.ifc_ifcu.ifcu_req[i].ifr_ifru.ifru_addr);
    }
  }

  return true;
}
Forums: 
kkomang의 이미지

열심히 찾고 있었는데..
매우 매우 감사합니다~ :D

서지훈의 이미지

http://bbs.kldp.org/viewtopic.php?t=28638&highlight=%BC%AD%C1%F6%C8%C6+++ip
이 글 참고하셔도 괜찮을듯 ^^

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

익명 사용자의 이미지

전에 리눅스에서 ip주소 메일로 넘기는 팁하나 적은적있었는데...
대략 어떤분이 한줄짜리로...~~ 수정을... 찾아보니 이렇더군요..

DATE="ip_address `date`";export DATE; ifconfig | mail
hongkildong@empal.com -s "$DATE"

(당근 한줄로 적어줘야합니다. 공간이 좁아서 2줄이된것임..한줄한줄..)

이 부분이 /etc/rc.local에 적어주시면 부팅할때마다 메일로 보내준다는...
요즘은 쓸일이 없지만요... 누가 부팅하냐고 묻지마세요... 꼭 이거 적으면
"부팅은 누가 시키는데요..??" 묻는분이 꼭 있다는..... 그건 각자 알아서...
해결....전 부팅은 해결해드릴수없습니다...

clublaw의 이미지

사탄의인형 wrote:
전에 리눅스에서 ip주소 메일로 넘기는 팁하나 적은적있었는데...
대략 어떤분이 한줄짜리로...~~ 수정을... 찾아보니 이렇더군요..

DATE="ip_address `date`";export DATE; ifconfig | mail
hongkildong@empal.com -s "$DATE"

(당근 한줄로 적어줘야합니다. 공간이 좁아서 2줄이된것임..한줄한줄..)

이 부분이 /etc/rc.local에 적어주시면 부팅할때마다 메일로 보내준다는...
요즘은 쓸일이 없지만요... 누가 부팅하냐고 묻지마세요... 꼭 이거 적으면
"부팅은 누가 시키는데요..??" 묻는분이 꼭 있다는..... 그건 각자 알아서...
해결....전 부팅은 해결해드릴수없습니다...


부팅은 원격으로 가능하지 않나요? 전 그렇게 부팅하는데 -_-;
PC 끌때는 터미널에서 shutdown 명령으로하고요. -_-;;;

"빈손으로 사랑하려는 자에게 세상은 너무 가혹하다."

DebPolaris의 이미지

좋은 정보 감사합니다~~!!!
--------------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'
http://heuno

-----------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'

DEBIAN TESTING, KDE...
debpolaris.blogspot.kr