我正在开发一些在 Centos 5.xx 安装上运行的软件。我们的客户不允许登录 Linux,一切都由我们开发的 Windows 应用程序完成。
因此,我们为用户构建了一个前端来配置网络设置:静态/DHCP、IP 地址、网关、DNS、主机名。
现在我让用户在 Windows 应用程序中输入信息,然后像这样在 Linux 服务器上写入:
- 写入 /etc/resolv.conf:名称服务器
- 写入 /etc/sysconfig/network:网关和主机名
- 写入 /etc/sysconfig/network-scripts/ifcfg-eth0:Ipaddress、Netmask、Bootproto(DHCP 或 Static)我还(过了一段时间)发现我无法发送邮件,除非我在 /etc/hosts 中写入:127.0.0.1 Hostname
所有这些似乎都有效,但是有没有更好/更简单的方法来做到这一点?
另外,我以几乎相同的方式读取网络配置,但如果我使用 DHCP,我会错过一些信息,例如 IP 地址。我知道我可以从命令行 (ifconfig) 获取一些信息,但我无法获取主机名、网关和 DNS 等信息。是否有可以显示这些信息的命令行工具?
答案1
您在编写信息时做得正确,但是您需要像您说的那样转到命令行来读取信息。
IP 是从ip addr show <interface>
或获取的ip addr show all
,并对其进行解析。ifconfig 是用于此目的的稍旧的命令。
默认网关ip route show
也是从这里获取的(route show 或 netstat -rn 会以不同的格式提供相同的信息 - ip 是用于配置此项的较新的命令)
DNS 服务器实际上总是/etc/resolv.conf
,因此读取它应该没问题。/etc/nsswitch.conf
是配置的地方...默认情况下/etc/hosts
将覆盖您的 DNS 服务器设置。
通过运行获取主机名hostname
答案2
可能是 Webmin。虽然它是一款基于 Web 的应用程序,但我不确定它是否能很好地适应所有网络配置更改。
答案3
我不确定我是否理解了你问题的主要部分,但最后一部分相当简单。没有一个程序可以显示你要查找的所有内容,但是,hostname
显示当前主机名,netstat -r
将显示网络路由数据和默认网关(如果已设置)。 dig
将显示当前使用的域名服务器。具体来说:
dig `hostname` | grep SERVER
应该返回类似
;; SERVER: 68.94.156.1#53(68.94.156.1)