跳转至主要内容

有没有想过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等子系统无法使用。

© 2020 Stratus Technologies.