gethostbyname 이 함수는 hosts를 참조하는거 같은데...
그러면 ppp0는 알 수가 없잖아요.
인터페이스별 아이피를 알 수 있는 방법 있나요?
ioctl(2)을 써야 합니다. SIOCGIFCONF나 SIOCGIFADDR를 써야 하는데, SIOCGIFADDR이 쓰기 쉽습니다. 코드는 다음과 같습니다:
#include <stdio.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/ioctl.h> #include <arpa/inet.h> #include <net/if.h> #define ADDR_MAX 32 int main(int argc, char *argv[]) { int fd; struct ifreq ifr; struct sockaddr_in *aptr; char address[ADDR_MAX] = { 0, }; if (argc != 2) { fprintf(stderr, "usage: %s INTERFACE\n", argv[0]); return 1; } fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd < 0) { fprintf(stderr, "socket(2) failed\n"); return 1; } strncpy(ifr.ifr_name, argv[1], IFNAMSIZ); if (ioctl(fd, SIOCGIFADDR, &ifr) < 0) { fprintf(stderr, "ioctl(2) failed\n"); return 1; } aptr = (struct sockaddr_in *)&ifr.ifr_addr; inet_ntop(AF_INET, &aptr->sin_addr, address, ADDR_MAX); printf("%s - %s\n", argv[1], address); return 0; }
실행한 화면입니다:
$ ./a.out lo lo - 127.0.0.1 $ ./a.out eth0 eth0 - 168.219.193.75 $ ./a.out eth1 eth1 - 192.168.0.1
-- C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
감사합니다. 복사/붙여넣기 하고 컴파일 했봤더니, 잘 됩니다.
그전에 제가 그냥 스크립터로 해보렸습니다.
#!/bin/sh ifconfig="/sbin/ifconfig ppp0" grep="grep addr" head="head -c 35" tail="tail -c 15" url="http://intra/~sjyoo/cgi-bin/ip_addr/ip_save.cgi?ip=" ip=`$ifconfig | $grep | $head | $tail` url=$url$ip w3m $url
??? w3m을 자동으로 종료 하는 법이 있을까요? w3m이는 여는 *.cgi파일에 자동종료 태그를 삽입하면 가능할까요?
장태산 멋진남
텍스트 포맷에 대한 자세한 정보
<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]
ioctl(2)을 써야
ioctl(2)을 써야 합니다. SIOCGIFCONF나 SIOCGIFADDR를 써야 하는데, SIOCGIFADDR이 쓰기 쉽습니다. 코드는 다음과 같습니다:
실행한 화면입니다:
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
감사합니다.
감사합니다. 복사/붙여넣기 하고 컴파일 했봤더니, 잘 됩니다.
그전에 제가 그냥 스크립터로 해보렸습니다.
#!/bin/sh
ifconfig="/sbin/ifconfig ppp0"
grep="grep addr"
head="head -c 35"
tail="tail -c 15"
url="http://intra/~sjyoo/cgi-bin/ip_addr/ip_save.cgi?ip="
ip=`$ifconfig | $grep | $head | $tail`
url=$url$ip
w3m $url
??? w3m을 자동으로 종료 하는 법이 있을까요?
w3m이는 여는 *.cgi파일에 자동종료 태그를 삽입하면 가능할까요?
장태산 멋진남
댓글 달기