摘要:在使用 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)完成修改