【info获取】openwrt获取info源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | static char *getipolloinfo(__maybe_unused struct api_data *root) { FILE *fstream=NULL; char ipaddr[16]; char macaddr[18]; char gateway[16]; char netmask[16]; char fpgaversion[6]; for ( int i=0;i<5;i++) { switch (i) { case 0: memset (ipaddr,0, sizeof (ipaddr)); if (NULL==(fstream=popen( "ifconfig br-lan | grep \"inet addr\" | awk '{ print $2}' | awk -F: '{print $2}'| tr -d ['\n']" , "r" ))) { applog(LOG_WARNING, "get ip addr execute command failed\n" ); continue ; } if (NULL!= fgets (ipaddr, sizeof (ipaddr), fstream)) { applog(LOG_WARNING, "ipaddr=%s\n" ,ipaddr); } else { continue ; } break ; case 1: memset (macaddr,0, sizeof (macaddr)); if (NULL==(fstream=popen( "cat /sys/class/net/br-lan/address| tr -d ['\n']" , "r" ))) { applog(LOG_WARNING, "get mac addr execute command failed\n" ); continue ; } if (NULL!= fgets (macaddr, sizeof (macaddr), fstream)) { applog(LOG_WARNING, "macaddr=%s\n" ,macaddr); } else { continue ; } break ; case 2: memset (gateway,0, sizeof (gateway)); if (NULL==(fstream=popen( "netstat -rn|grep br-lan|awk '{print $2}'|awk 'NR==1'| tr -d ['\n']" , "r" ))) { applog(LOG_WARNING, "get gateway execute command failed\n" ); continue ; } if (NULL!= fgets (gateway, sizeof (gateway), fstream)) { applog(LOG_WARNING, "gateway=%s\n" ,gateway); } else { continue ; } break ; case 3: memset (netmask,0, sizeof (netmask)); if (NULL==(fstream=popen( "ifconfig br-lan | grep \"Mask\" | awk '{ print $4}' |awk -F: '{print $2}'| tr -d ['\n']" , "r" ))) { applog(LOG_WARNING, "get Netmask execute command failed\n" ); continue ; } if (NULL!= fgets (netmask, sizeof (netmask), fstream)) { applog(LOG_WARNING, "netmask=%s\n" ,netmask); } else { continue ; } break ; case 4: memset (fpgaversion,0, sizeof (fpgaversion)); if (NULL==(fstream=popen( "cat /tmp/fpgaversion| tr -d ['\n']" , "r" ))) { applog(LOG_WARNING, "get fpga version command failed\n" ); continue ; } if (NULL!= fgets (fpgaversion, sizeof (fpgaversion), fstream)) { applog(LOG_WARNING, "fpgaversion=%s\n" ,fpgaversion); } else { continue ; } break ; } pclose(fstream); } root = api_add_string(root, "IP" , ipaddr, true ); root = api_add_string(root, "Gateway" , gateway, true ); root = api_add_string(root, "Netmask" , netmask, true ); root = api_add_string(root, "MAC" , macaddr, true ); root = api_add_string(root, "FPGA Version" , fpgaversion, true ); return ( char *)root; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2019-10-28 液晶电视配屏相关问题解决方法