获取system的输出(使用popen)的例子

 gcc -o popen popen.c
#include <stdio.h>

#define  BUFF_SIZE   1024

int main( void)
{
   const char  *pname = "dmidecode -t 1 | grep Name | sed 's/\t//g'";
   const char  *serial = "dmidecode -t 1 | grep Serial | sed 's/\t//g'";
   const char  *cpuname = "cat /proc/cpuinfo | grep \"model name\" | sort -u | cut -f 2 -d :";
   const char  *cpucore = "cat /proc/cpuinfo | grep \"processor\" | cut -f 2 -d : | wc -l";
   const char  *cpuphy = "cat /proc/cpuinfo | grep \"physical id\" |sort -u | cut -f 2 -d : | sed 's/ //g' | wc -l";
   const char  *cpumhz = "cat /proc/cpuinfo | grep \"cpu MHz\" |sort -u | cut -f 2 -d : | sed 's/ //g'";
   const char  *memtotal = "cat /proc/meminfo | grep MemTotal";
   const char  *kernelv = "uname -a | awk '{print $3}'";
   const char  *kernelr = "uname -a | awk '{print $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15}'";
   const char  *ifconfig = "ifconfig | grep -e Ethernet -e  \"inet addr\" -e Local";
   const char  *ethtool = "ls /etc/sysconfig/network-scripts/ | grep ifcfg | cut -f 2 -d \"-\" | awk '{print \"ethtool \" $1}' | sh";
   const char  *bond = "for bond in `ls /proc/net/bonding | grep bond`; do echo \"---------- Bonding - $bond ----------\"; echo \"cat /proc/net/bonding/$bond\" | sh ; done";
   const char  *gateway = "route -n | grep ^0.0.0.0 | awk '{print $2}'";
   const char  *dns = "cat /etc/resolv.conf  | grep nameserver";
   const char  *vgdis = "vgs | awk '{print \"vgdisplay \" $1}' |grep -v VG | sh";
   const char  *cron = "for user in `ls /var/spool/cron/`; do echo \"---------- Cron Job - $user ----------\"; echo \"cat /var/spool/cron/$user\" | sh ; done";
   const char  *fibre = "lspci | grep Fibre";
   const char  *nic = "lspci | grep Ethernet";
   const char  *vga = "lspci | grep VGA";
   char  buff[BUFF_SIZE];
   FILE *fp;

    printf("\n");
    printf("LinuxConf for RHEL");
    printf("\n");

   fp = popen( "date", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "Exec date : %s", buff);

   pclose( fp);

    printf("\n");
    printf("\033[101m================= Server Information  =================\033[0m\n");
    printf("\n");
    printf("* Hardware Information\n");
    printf("\n");

   fp = popen( "hostname", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "Hostname : %s", buff);

   pclose( fp);

   fp = popen( pname, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

   fp = popen( serial, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

   fp = popen( cpuname, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "CPU Model :%s", buff);

   pclose( fp);

   fp = popen( cpucore, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "CPU Core : %s", buff);

   pclose( fp);

   fp = popen( cpuphy, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "Physical CPU NUM : %s", buff);

   pclose( fp);

   fp = popen( cpumhz, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "CPU Speed : %s", buff);

   pclose( fp);


   fp = popen( memtotal, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("* OS Information\n");
    printf("\n");
  
   fp = popen( "cat /etc/redhat-release", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "OS Version : %s", buff);

   pclose( fp);

   fp = popen( kernelv, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "Kernel Version : %s", buff);

   pclose( fp);

   fp = popen( kernelr, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "Kernel Release : %s", buff);

   pclose( fp);

    printf("\n");
    printf("* Memory Information\n");
    printf("\n");

   fp = popen( "free", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

   fp = popen( "vmstat", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("\033[101m================= Network Information  =================\033[0m\n");
    printf("\n");

    printf("* Network Address\n");
    printf("\n");

   fp = popen( ifconfig, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("* Bonding Status\n");
    printf("\n");

   fp = popen( bond, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);


    printf("\n");
    printf("* Link Mode/Link Speed\n");
    printf("\n");

   fp = popen( ethtool, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("* Routing Table\n");
    printf("\n");

   fp = popen( "netstat -rn", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("* Default Gateway\n");
    printf("\n");

   fp = popen( gateway, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "Gateway : %s", buff);

   pclose( fp);

    printf("\n");
    printf("* DNS\n");
    printf("\n");

   fp = popen( dns, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("\033[101m================= Disk Information  =================\033[0m\n");
    printf("\n");

    printf("* Filesystem Information\n");

   fp = popen( "cat /etc/fstab", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");

   fp = popen( "df -h", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
   
   printf("* Volume Group Information\n");

   fp = popen( "vgs", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");

  fp = popen( vgdis, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

   printf("* Logical Volume Information\n");

   fp = popen( "lvs", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");

  fp = popen( "lvdisplay", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

   printf("* Physical Volume Information\n");

   fp = popen( "pvs", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");

  fp = popen( "pvdisplay", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

   printf("* Fdisk\n");

   fp = popen( "fdisk -l", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("\033[101m================= PCI Card Information  =================\033[0m\n");
    printf("\n");

    printf("* HBA Information\n");

   fp = popen( fibre, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("* Network Interface Information\n");

   fp = popen( nic, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("* Video Card Information\n");

   fp = popen( vga, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("\033[101m================= ETC Information  =================\033[0m\n");
    printf("\n");

    printf("* User List\n");

   fp = popen( "w", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    
    printf("* Cron job List\n");

   fp = popen( cron, "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");

   printf("* Process List - \"ps -ef\"\n");

   fp = popen( "ps -ef", "r");
   if ( NULL == fp)
   {
      perror( "popen() fail");
      return -1;
   }

   while( fgets( buff, BUFF_SIZE, fp) )
      printf( "%s", buff);

   pclose( fp);

    printf("\n");
    printf("\033[103m============================================================ CJ ONS yongho.kwon1@cj.net =========== \033[0m\n");

    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边闲人2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值