第 102 章 Ntop

102.1. Installation

102.1.1. Ubuntu
$ sudo apt-get install ntop
$ sudo apt-get install graphviz
			

设置管理员密码

	        
  ┌───────────────────────────┤ Configuring ntop ├───────────────────────────┐
  │ Please choose a password to be used for the privileged user "admin" in   │
  │ ntop's web interface.                                                    │
  │                                                                          │
  │ Administrator password:                                                  │
  │                                                                          │
  │ ________________________________________________________________________ │
  │                                                                          │
  │                                  <Ok>                                    │
  │                                                                          │
  └──────────────────────────────────────────────────────────────────────────┘


  ┌──────────────────────────┤ Configuring ntop ├───────────────────────────┐
  │ Please enter the same password again to verify that you have typed it   │
  │ correctly.                                                              │
  │                                                                         │
  │ Re-enter password to verify:                                            │
  │                                                                         │
  │ _______________________________________________________________________ │
  │                                                                         │
  │                                 <Ok>                                    │
  │                                                                         │
  └─────────────────────────────────────────────────────────────────────────┘
			
			

如果你忘记密码,可以使用下面命令重置密码

$ sudo ntop --set-admin-password
			
$ sudo /etc/init.d/ntop start
			
102.1.2. CentOS

5.x

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -K rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm
yum install ntop
			

设置管理员密码

# ntop -A
Tue May 22 13:03:34 2012  NOTE: Interface merge enabled by default
Tue May 22 13:03:34 2012  Initializing gdbm databases


ntop startup - waiting for user response!


Please enter the password for the admin user:
Please enter the password again:
Tue May 22 13:03:40 2012  Admin user password has been set
			

备份配置文件

# cp /etc/ntop.conf /etc/ntop.conf.old
			

/etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
service iptables restart
			

启动ntop

# /usr/bin/ntop -d -L -u ntop -P /var/ntop --use-syslog=daemon
or
# /usr/bin/ntop -d -L -u ntop -P /var/ntop --skip-version-check --use-syslog=daemon
			

/etc/init.d/ntop 脚本有bug无法启动,需要如下修改

# vim /etc/init.d/ntop
start () {
    echo -n $"Starting $prog: "
    #daemon $prog -d -L @/etc/ntop.conf
    daemon $prog  @/etc/ntop.conf
			




原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

08-16
### IPv4 地址字符串转换为网络地址结构的实现 在嵌入式网络编程中,将点分十进制字符串形式的 IPv4 地址转换为网络字节序的二进制格式是一项基础操作。标准接口 `inet_pton` 提供了这一功能,但在资源受限的环境中,通常需要实现一个轻量级的替代函数 `KT_RT_inet_pton`。 该函数的实现需要处理如下逻辑: - 输入为 `const char*` 类型的字符串,格式应为 `a.b.c.d`。 - 输出为网络地址结构(如 `struct in_addr`)。 - 支持 `AF_INET` 地址族。 - 对输入字符串进行格式校验,确保其为合法 IPv4 地址。 - 将字符串地址转换为 32 位整数,并以网络字节序写入输出缓冲区。 ### 示例实现代码 ```c #include <stdint.h> #include <stdio.h> #include <string.h> #include <ctype.h> #define KT_RETCODE_OK 0 #define KT_RETCODE_ERROR -1 typedef int KT_return_t; KT_return_t KT_RT_inet_pton(int family, const char *strptr, void *addrptr) { if (family != AF_INET) { return KT_RETCODE_ERROR; } if (strptr == NULL || addrptr == NULL) { return KT_RETCODE_ERROR; } uint8_t *bytes = (uint8_t *)addrptr; int byte_count = 0; unsigned long val = 0; int digit_count = 0; while (*strptr) { char c = *strptr++; if (isdigit(c)) { val = val * 10 + (c - '0'); digit_count++; if (digit_count > 3) { return KT_RETCODE_ERROR; // 超出三位数字 } } else if (c == '.' && digit_count > 0) { if (val > 255) { return KT_RETCODE_ERROR; // 字段值超出范围 } bytes[byte_count++] = (uint8_t)val; val = 0; digit_count = 0; } else { return KT_RETCODE_ERROR; // 非法字符 } } if (digit_count == 0 || val > 255) { return KT_RETCODE_ERROR; // 最后一个字段无效 } bytes[byte_count++] = (uint8_t)val; if (byte_count != 4) { return KT_RETCODE_ERROR; // 字段数量不为4 } return KT_RETCODE_OK; } ``` 该实现通过逐字符解析字符串,验证每个字段是否为合法的 0~255 范围内的整数,并确保字段数量为 4。最终将结果写入 `addrptr` 所指向的 `struct in_addr` 结构中,以网络字节序存储。 ### 使用示例 ```c #include <stdio.h> int main() { struct { uint32_t s_addr; } in_addr; const char *ip_str = "192.168.1.1"; KT_return_t ret = KT_RT_inet_pton(AF_INET, ip_str, &in_addr); if (ret == KT_RETCODE_OK) { printf("Conversion successful: 0x%08X\n", in_addr.s_addr); } else { printf("Conversion failed.\n"); } return 0; } ``` 输出: ``` Conversion successful: 0x0101A8C0 ``` 该示例验证了字符串 `192.168.1.1` 被正确转换为网络字节序的 32 位整数 `0x0101A8C0`。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值