精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>系统管理>>系统设置与技巧>>杂七杂八之howto>>杂七杂八的 : 打last显示IP而不是hostnam

主题:杂七杂八的 : 打last显示IP而不是hostnam
发信人: neal()
整理人: (1999-04-22 03:13:50), 站内信件

        从 FreeBSD-2.2/3.0 起,如果登入的 FQDN 长度 > 16 个字元 
(UT_HOSTSIZE) 
        则系统会以 IP 纪录,因此你打 last 就会看到一堆 IP 而不是"不完整"的 
        hostname,有些系统如 bbs 也会受影响。当然,这个 feature 有些人不喜欢
 
        ,毕竟人还是看 FQDN 比较习惯,因此你可以自己拿掉这个 feature。 
         
        1. 修改 telnetd 的程式码 
           telnetd 的程式码放在 /usr/src/libexec/telnetd/ 或是 ftp://freebsd 
          
 .csie.nctu.edu.tw/pub/FreeBSD-current/src/libexec/telnetd/, 
           取回来後,你可以先修改 8bit 的支援,再来拿掉判断 UT_HOSTSIZE 
           的地方。修改 telnetd.c 把以下这段 (搜寻 hp->h_name) 
 
>>      } else if (hp && 
>>          (strlen(hp->h_name) <= ((utmp_len < 0) ?
-utmp_len : utmp_len))) {
host = hp->h_name; 
        } else { 
                host = inet_ntoa(who->sin_addr); 
        } 
 
           改成 
 
>>      } else if (hp) { 
                host = hp->h_name; 
        } else { 
                host = inet_ntoa(who->sin_addr); 
        } 
 
        2. 修改 login 的程式码 
           login 的程式码放在 /usr/src/usr.bin/login/ 或是 ftp://freebsd 
           
.csie.nctu.edu.tw/pub/FreeBSD-current/src/usr.bin/login/, 
           取回来後,修改 login.c 把以下这段 (搜寻 UT_HOSTSIZE) 完全删
除。 
 
>>                      if (strlen(optarg) > UT_HOSTSIZE) { 
>>                              struct hostent *hp = 
gethostbyname(optarg); 
>> 
>>                              if (hp != NULL) { 
>>                                      struct in_addr in; 
>> 
>>                                      memmove(&in, hp->h_addr, 
sizeof(in)); 
>>                                      optarg = strdup(inet_ntoa(in)); 
>>                              } else 
>>                                      optarg = "invalid hostname"; 
>>                      } 
 
        3. 其他的程式 
           还有其他的程式会做写入 utmp 或 wtmp 的动作,你必须自行修改, 
           你可以从 logwtmp(), UT_HOSTSIZE, hp->h_name, utmp, 
wtmp 等等 
           关键字来搜寻修改。 
 

--
※ 来源:.网易 BBS bbs.netease.com.[FROM: dmx320.resnet.ust.hk]

[关闭][返回]