whiptail构建可视化脚本
什么是whiptail?
- 在Linux中可以使用命令来形成对话框,Linux命令行形成的对话框就是以代码的形式出现。whiptail就是一个Linux可以形成对话框的命令行,本文就来介绍一下Linux使用whiptail形成对话框的方法。
简单的废话
经过最近的研究,翻了很多百度关于whiptail的文章,都是一些介绍用法,看的非常苦恼,脑袋爆炸,看了很多我真的没有找到一些有实例的,比如那个进度条.(!#@$%^@^%@^%&%&)!!! 表达的心情都在括号里! 还好有大牛的指点及辅导,才有了今天的这一篇很简单的案例。 算是总结,也算是分享,~ 可以往下滑了~
首先确定用户的IP地址如下:
- 2、输入IP地址后判断IP地址反馈结果
- 3、IP地址正确后弹出是否需要安装nginx服务?
- 4、当用户选择确定安装后,进入进度条页面
- 5、进度条走完弹出安装成功并引导用户访问页面
- 访问页面测试结果
好像还少了个错误判断 如下:
- 当用户输入判断不合法时,提示用户IP地址是错误的
- 让用户选择再次输入IP地址还是退出
- 在这里我选择No
哦? 好像缺了代码? 没关系-贴上!
#!/bin/bash
function Prompt(){
(whiptail --title "IP地址更改(yes/no)" --yesno "您是否需要重新配置IP地址?" 10 60)
if [ $? -eq 0 ];then
ip_check
else
whiptail --title "Nginx提示!" --msgbox "欢迎您再次使用Nginx一键安装服务." 10 60
exit 1
fi
}
function ip_check(){
IP=$(whiptail --title "IP地址设置" --inputbox "请您输入您的IP地址" 10 60 3>&1 1>&2 2>&3)
VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then
if [[ "$VALID_CHECK" == "yes" ]]; then
whiptail --title "IP地址合法提示!" --msgbox "您输入的IP地址正确,点击OK进行下一步配置!." 10 60
fi
else
whiptail --title "IP地址错误提示!" --msgbox "您输入的IP地址可能有误,请您检查后再次输入!." 10 60
Prompt
fi
}
function install_nginx(){
(whiptail --title "安装 Nginx?(yes/no)" --yesno "你是否需要安装Nginx?" 10 60)
if [ $? -eq 0 ];then
{
sleep 1
echo 5
apt-get update >/dev/null
sleep 1
echo 10
sudo apt-get -y install build-essential >/dev/null &
sleep 1
echo 30
sudo apt-get -y install openssl libssl-dev >/dev/null &
sleep 1
echo 50
sudo apt-get -y install libpcre3 libpcre3-dev >/dev/null &
sleep 1
echo 70
sudo apt-get -y install zlib1g-dev >/dev/null &
sleep 1
echo 90
wget -q http://nginx.org/download/nginx-1.12.2.tar.gz >/dev/null
sleep 1
echo 95
useradd -M -s /sbin/nologin nginx &
tar zxf /root/nginx-1.12.2.tar.gz && cd /root/nginx-1.12.2/ &&
./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=nginx >/dev/null && make >/dev/null && make install >/dev/null
/usr/local/nginx/sbin/nginx &>/dev/null &
sleep 100
} | whiptail --gauge "正在安装Nginx,过程可能需要几分钟请稍后.........." 6 60 0 && whiptail --title "Nginx安装成功提示!!!" --msgbox "恭喜您Nginx安装成功,请您访问:http://$IP:80, 感谢使用~~~" 10 60
else
whiptail --title "Nginx提示!!!" --msgbox "感谢使用~~~" 10 60
exit 1
fi
}
function mail(){
ip_check
install_nginx
}
希望对您有所帮助~~~~