자신 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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.