优秀的编程知识分享平台

网站首页 > 技术文章 正文

Linux系统Shell脚本编程之whiptail图形化工具设置主机名和DNS

nanyue 2025-03-07 22:27:02 技术文章 1 ℃

摘要:在使用 Linux 系统的时候,常常得用系统命令来给主机配置各种各样的属性。比如说,为了能更清楚地认出服务器,得给各个服务器起名字,按照服务器的功能给主机命名。还有就是给服务器配置 DNS 域名解析服务,把主机名和服务器的 IP 地址对应起来。通常来讲,一般得手动去执行命令或者修改相应的配置文件,可这些操作都特别无聊,能琢磨着把 Shell 脚本的 whiptail 图形化工具结合起来编写程序,把上面说的那些操作通过图形化界面直接、简单地展示出来,这样方便理解,也好操作。

本文主要讲的是在 Linux 系统的 Shell 脚本编程里,用 whiptail 图形化工具设置主机名和 DNS 的设置程序,详细的情况请看下面的内容。

一、登录Linux系统

1.登录Linux系统

2.查看Bash版本信息

二、字符界面设置主机名和DNS

1.字符界面设置主机名

说明:字符界面设置主机名的方法有好几种,本文主要介绍的是通过修改配置文件的方法永久性的设置主机名。

(1)执行指令# vim /etc/hostname

将主机名修改为以下名字

(2)执行指令# hostnamectl查看修改后的主机名

备注:通过修改配置文件的方式配置主机名,效果是永久性的,如果要马上生效,需要reboot服务器。

2.字符界面设置DNS

说明:字符界面设置服务器DNS的方法也有好几种,下文介绍的是通过修改配置文件resolv.conf的方法设置DNS解析服务器。

(1)执行指令# vim /etc/resolv.conf

设置DNS域名解析服务器如下

(2)执行指令# nslookup www.163.com查看域名解析的结果

备注:Linux下设置DNS的位置主要方式有,网卡设置配置文件里面DNS设置,系统默认DNS服务器地址设置,hosts文件指定。

三、图形界面设置主机名和DNS

1.编写程序whiptail_hostname_dns.sh

(1)定义参数

HOSTNAME_FILE="/etc/hostname"

RESOLV_FILE="/etc/resolv.conf"

HOSTNAME=""

RESOLV=""

(2)设计主机名输入函数

# 设计主机名输入函数

function input_hostname() {

while true; do

HOSTNAME=$(whiptail --title "$TITLE" --inputbox "\n\n请输入主机名:" 13 60 $HOSTNAME 3>&1 1>&2 2>&3)

if [ $? != 0 ]; then #用户选择【取消】则退出

exit

fi

if [ ! $HOSTNAME = "" ]; then #输入不为空则有效,否则重新输入 break;

fi

done

}

(3)设计DNS地址输入函数

# 设计DNS输入函数

function input_resolv() {

while true; do

RESOLV=$(whiptail --title "$TITLE" --inputbox "\n\n请输入DNS:" 13 60 $RESOLV 3>&1 1>&2 2>&3)

if [ $? != 0 ]; then #用户选择【取消】则退出

exit

fi

if [ ! $RESOLV = "" ]; then #输入不为空则有效,否则重新输入 break;

fi

done

}

(4)设计修改确认函数

# 修改前再次确认

function confirm() {

if (whiptail --title "$TITLE" --yes-button "再次确认" --no-button "取消回退" --yesno "\n 请再次确认主机名和DNS配置信息:\n\n 主机名 = $HOSTNAME\n DNS地址 = $RESOLV\n " 15 60) then

CONFIRM=1

else

CONFIRM=0

fi

}

# 将修改后的主机名和DNS信息输入到配置文件

function save() {

echo " $HOSTNAME" > $HOSTNAME_FILE

echo "nameserver $RESOLV" >> $RESOLV_FILE

}

(5)设计主函数

# 开始执行程序

Input_hostname #输入主机名

Input_resolv #输入DNS

confirm #确认


if [ $CONFIRM -eq 1 ]; then #用户已确认

{

echo 30 #先显示进度30%

save #保存配置信息

echo 100 #完成后显示进度100%

} | (whiptail --title "$TITLE" --gauge "" 6 60 0)

fi

2.授权程序whiptail_hostname_dns.sh

3.执行程序whiptail_hostname_dns.sh

(1)输入主机名

(2)输入DNS

(3)确认输入的配置信息

(4)完成修改

最近发表
标签列表