DISK 상태 확인하기.

park7275의 이미지

지난번 질문을 한 번 했었는데요.
SNMP를 하시라고 했는데. 사정상 SNMP는 사용 할 수 없어서.

다시 질문드립니다.

/etc/mnttab에 entry를 가져와서 check를 하는데.
unix file system 으로 된것만 확인하는데요.

실제 이 파티션에 문제가 발생했는지를 어떻게 확인 할 수 있을까요?
듣기로는 unmount 된 파티션을 읽을면
process 자체가 block 된다는 얘기도 있고.

가장 효율적으로 이 문제에 접근 할 수 있는 방법이 없을까요?

그리고 추가적인 질문인데요.
만약 lan card자체에 문제가 발생하면 ifconfig 로 확인하면 UP이
down으로 처리된다던지 문제 발생이 ifconfig로 확인 되는지? 알고 싶습니다.

그럼 요즘 환절기에 감기 조심하시고 (쿨럭....감기가...타자까지 힘든상황...ㅜㅜ)

즐거운 하루 되세요~~~

불량청년의 이미지

두번째 질문에 대한 관련 소그가 있는것 같아 올립니다.

#if !defined(DEF_ifconfig_c) 
#define DEF_ifconfig_c "ifconfig.c" 

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <string.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <sys/ioctl.h> 
#include <netinet/in.h> 
#include <net/if.h> 
#include <netinet/if_ether.h> 
#include <arpa/inet.h> 
#include <netdb.h> 

int main(int s_Argc, char **s_Argv); 

int main(int s_Argc, char **s_Argv) 
{ 
 int s_SocketHandle;    
 int s_RequestCount = 10; 
 struct ifconf s_ifconfig; 
 struct ifreq *s_ifrequest; 
 struct sockaddr_in *s_SockAddr_In; 
  
 char s_StringBuffer[1 << 10]; 
 char *s_MyTitle; 
 char *s_MyDevice; 
 char *s_MyIP, *s_MyBroadcastIP, *s_MyNetmaskIP; 
 char *s_MyHWAddr; 
 char *s_MyFlagString; 
 int  s_MyFlags, s_MyMTU, s_MyMetric; 
 fprintf(stdout, "MZ_ifconfig v0.0.1b - Copyright(c)InfoEQ co.,LTD - %s %s\n", __DATE__, __TIME__); 
 fprintf(stdout, "Code by JaeHyuk Cho - <minzkn@infoeq.co.kr>\n\n"); 
 s_SocketHandle = socket(AF_INET, SOCK_DGRAM, 0); 
 if(s_SocketHandle >= 0) 
 { 
  memset((void *)&s_ifconfig, 0, sizeof(struct ifconf)); 
  do 
  { 
   if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf); 
   s_ifconfig.ifc_len = sizeof(struct ifreq) * s_RequestCount; 
   s_ifconfig.ifc_buf = malloc(s_ifconfig.ifc_len); 
   if(s_ifconfig.ifc_buf) 
   { 
    if(ioctl(s_SocketHandle, SIOCGIFCONF, &s_ifconfig) == 0) 
    { 
     if(s_ifconfig.ifc_len < (sizeof(struct ifreq) * s_RequestCount)) 
     { 
      s_ifrequest = s_ifconfig.ifc_req; 
      if(s_ifrequest) 
      { 
       for(s_RequestCount = 0;s_RequestCount < s_ifconfig.ifc_len;s_RequestCount += sizeof(struct ifreq), s_ifrequest++) 
       { 
        /* ------------------------------------------------------------------------ */           
   s_MyDevice = strdup(s_ifrequest->ifr_name); 
    
   ioctl(s_SocketHandle, SIOCGIFADDR, s_ifrequest);        
   s_SockAddr_In       = (struct sockaddr_in *)(&s_ifrequest->ifr_addr); 
        s_MyIP              = strdup(inet_ntoa(s_SockAddr_In->sin_addr));    
   ioctl(s_SocketHandle, SIOCGIFBRDADDR, s_ifrequest);        
   s_SockAddr_In       = (struct sockaddr_in *)&s_ifrequest->ifr_broadaddr; 
        s_MyBroadcastIP     = strdup(inet_ntoa(s_SockAddr_In->sin_addr));    
   ioctl(s_SocketHandle, SIOCGIFNETMASK, s_ifrequest);        
   s_SockAddr_In       = (struct sockaddr_in *)&s_ifrequest->ifr_netmask; 
        s_MyNetmaskIP       = strdup(inet_ntoa(s_SockAddr_In->sin_addr));    
    
   if(ioctl(s_SocketHandle, SIOCGIFHWADDR, s_ifrequest) == 0) 
   { 
    unsigned char s_NullHWAddr[] = {0, 0, 0, 0, 0, 0}; 
         if(memcmp(&s_ifrequest->ifr_hwaddr.sa_data[0], &s_NullHWAddr[0], sizeof(s_NullHWAddr)) == 0) 
    { 
          strcpy(s_StringBuffer, ""); 
    } 
    else 
    { 
     sprintf(s_StringBuffer, "HWAddr %02x:%02x:%02x:%02x:%02x:%02x", 
       s_ifrequest->ifr_hwaddr.sa_data[0] & 0xff, 
       s_ifrequest->ifr_hwaddr.sa_data[1] & 0xff, 
       s_ifrequest->ifr_hwaddr.sa_data[2] & 0xff, 
       s_ifrequest->ifr_hwaddr.sa_data[3] & 0xff, 
       s_ifrequest->ifr_hwaddr.sa_data[4] & 0xff, 
       s_ifrequest->ifr_hwaddr.sa_data[5] & 0xff 
           ); 
    } 
   } 
   else strcpy(s_StringBuffer, "HWAddr <ERROR>"); 
   s_MyHWAddr = strdup(s_StringBuffer); 
    
   if(ioctl(s_SocketHandle, SIOCGIFFLAGS, s_ifrequest) == 0)s_MyFlags = s_ifrequest->ifr_flags; 
   else s_MyFlags = 0; 
          strcpy(s_StringBuffer, ""); 
   if(s_MyFlags == 0)strcpy(s_StringBuffer, "[NO FLAGS]"); 
   else 
   { 
    if(s_MyFlags & IFF_UP          )strcat(s_StringBuffer, "UP ");    
    if(s_MyFlags & IFF_BROADCAST   )strcat(s_StringBuffer, "BROADCAST ");    
    if(s_MyFlags & IFF_DEBUG       )strcat(s_StringBuffer, "DEBUG ");    
    if(s_MyFlags & IFF_LOOPBACK    )strcat(s_StringBuffer, "LOOPBACK ");    
    if(s_MyFlags & IFF_POINTOPOINT )strcat(s_StringBuffer, "POINTOPOINT ");    
    if(s_MyFlags & IFF_NOTRAILERS  )strcat(s_StringBuffer, "NOTRAILERS ");    
    if(s_MyFlags & IFF_RUNNING     )strcat(s_StringBuffer, "RUNNING ");    
    if(s_MyFlags & IFF_NOARP       )strcat(s_StringBuffer, "NOARP ");    
    if(s_MyFlags & IFF_PROMISC     )strcat(s_StringBuffer, "PROMISC ");    
    if(s_MyFlags & IFF_ALLMULTI    )strcat(s_StringBuffer, "ALLMULTI ");    
    if(s_MyFlags & IFF_SLAVE       )strcat(s_StringBuffer, "SLAVE ");    
    if(s_MyFlags & IFF_MASTER      )strcat(s_StringBuffer, "MASTER ");    
    if(s_MyFlags & IFF_MULTICAST   )strcat(s_StringBuffer, "MULTICAST ");    
   } 
   s_MyFlagString = strdup(s_StringBuffer); 

        s_MyTitle = strdup("Unknown"); /* Not support */ 
    
   if(ioctl(s_SocketHandle, SIOCGIFMTU, s_ifrequest) == 0)s_MyMTU = s_ifrequest->ifr_mtu; 
   else s_MyMTU = 0; 
    
   if(ioctl(s_SocketHandle, SIOCGIFMETRIC, s_ifrequest) == 0)s_MyMetric = s_ifrequest->ifr_metric; 
   else s_MyMetric = 0; 
        
   /* Print. */ 
   fprintf(stdout, 
      "%-8s Link encap:%s  %s\n" 
      "%-8s inet addr %-15s  Broadcast %-15s  Netmask %-15s\n" 
      "%-8s %s MTU:%d Metric:%d\n" 
      "\n", 
           s_MyDevice, s_MyTitle, s_MyHWAddr, 
      "", s_MyIP, s_MyBroadcastIP, s_MyNetmaskIP, 
      "", s_MyFlagString, s_MyMTU, s_MyMetric ? s_MyMetric : 1 
          ); 
    
   /* Free. */ 
   if(s_MyTitle      )free(s_MyTitle); 
   if(s_MyDevice     )free(s_MyDevice); 
   if(s_MyIP         )free(s_MyIP); 
   if(s_MyBroadcastIP)free(s_MyBroadcastIP); 
   if(s_MyNetmaskIP  )free(s_MyNetmaskIP); 
   if(s_MyHWAddr     )free(s_MyHWAddr); 
   if(s_MyFlagString )free(s_MyFlagString); 
        /* ------------------------------------------------------------------------ */           
       } 
      } 
      break; 
     } 
     else s_RequestCount += 10; 
    } 
    else break; 
   } 
   else break; 
  }while(1);  
  if(s_ifconfig.ifc_buf)free(s_ifconfig.ifc_buf); 
  close(s_SocketHandle);     
 } 
 else fprintf(stderr, "Can not open socket !!!\n"); 
 return(0); 
} 

#endif 

이곳 게시판에서 찾은 겁니다. 수고하세요~ *^^*

H/W가 컴퓨터의 심장이라면 S/W는 컴퓨터의 영혼이다!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.