有没有想过STCP是怎么知道自己的名字的?在>system>stcp目录下有一个叫host的文件。这个文件包含了一行模块的名称,你可以直接编辑或显示这个文件,但我建议你使用hostname命令。你可以直接编辑或显示这个文件,但我建议你使用hostname命令。在没有参数的情况下,它将显示host文件的内容。
主机名 宸宸 准备好了 13: 46: 51 |
图1 - 用hostname命令显示主机名 |
如果你提供一个参数,它将把主机文件的内容设置为该参数值,这就成为STCP主机名。
主机名this-is-a-test 这是一个测试 准备好了 13: 47: 00 主机名 这是一个测试 准备好了 13: 47: 03 |
图2 - 使用hostname命令更改主机名 |
除了命令之外,还有一个编程函数来返回主机名
#include <stdio.h> #include <errno.h> #include <netdb.h> int errno; void exit (int); main () { char name [32]; if (gethostname (name, 32) < 0) { perror ("ex_gethostname: Error getting hostname"); exit (errno); } else printf ("hostname is %sn", name); |
图3 - 使用gethostname函数的程序 |
一些子系统依靠主机名来识别模块。它们检索该名称,并将该名称作为一个字符串使用,或将该名称解析为一个IP地址。如果名称不存在、错误、解析到错误的IP地址或无法解析,应用程序可能会失败或功能不正确。
舉例來說,如果您是透過 Radius 伺服器進行外部認證,模組的 IP 位址,從主機名稱解析出來,會在 Radius 請求封包的 NAS-IP-ADDRESS 欄位中傳送。如果IP位址不是它所期待的,或是所提供的使用者ID與該IP位址沒有關聯,您的Radius伺服器可能會拒絕該請求。
hostname命令是module_start_up命令宏的一部分。不需要每次系统启动时都设置主机名,因为主机名在每次启动时都是持久的,但也无妨。最重要的是确保名字被设置为能解析到正确的 IP 地址。错误的名称或错误的IP地址解析可能会使Radius、SSH或Samba等子系统无法使用。