whiptail构建可视化脚本

什么是whiptail?

  • 在Linux中可以使用命令来形成对话框,Linux命令行形成的对话框就是以代码的形式出现。whiptail就是一个Linux可以形成对话框的命令行,本文就来介绍一下Linux使用whiptail形成对话框的方法。

简单的废话

  • 经过最近的研究,翻了很多百度关于whiptail的文章,都是一些介绍用法,看的非常苦恼,脑袋爆炸,看了很多我真的没有找到一些有实例的,比如那个进度条.(!#@$%^@^%@^%&%&)!!! 表达的心情都在括号里! 还好有大牛的指点及辅导,才有了今天的这一篇很简单的案例。 算是总结,也算是分享,~ 可以往下滑了~

  • 首先确定用户的IP地址如下:

image.png

  • 2、输入IP地址后判断IP地址反馈结果

image.png

  • 3、IP地址正确后弹出是否需要安装nginx服务?

image.png

  • 4、当用户选择确定安装后,进入进度条页面

image.png

  • 5、进度条走完弹出安装成功并引导用户访问页面

image.png

  • 访问页面测试结果

image.png

好像还少了个错误判断 如下:

image.png

  • 当用户输入判断不合法时,提示用户IP地址是错误的

image.png

  • 让用户选择再次输入IP地址还是退出

image.png

  • 在这里我选择No

image.png

  • 在这里就不在演示了

哦? 好像缺了代码? 没关系-贴上!

  1. #!/bin/bash
  2. function Prompt(){
  3. (whiptail --title "IP地址更改(yes/no)" --yesno "您是否需要重新配置IP地址?" 10 60)
  4. if [ $? -eq 0 ];then
  5. ip_check
  6. else
  7. whiptail --title "Nginx提示!" --msgbox "欢迎您再次使用Nginx一键安装服务." 10 60
  8. exit 1
  9. fi
  10. }
  11. function ip_check(){
  12. IP=$(whiptail --title "IP地址设置" --inputbox "请您输入您的IP地址" 10 60 3>&1 1>&2 2>&3)
  13. VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
  14. if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then
  15. if [[ "$VALID_CHECK" == "yes" ]]; then
  16. whiptail --title "IP地址合法提示!" --msgbox "您输入的IP地址正确,点击OK进行下一步配置!." 10 60
  17. fi
  18. else
  19. whiptail --title "IP地址错误提示!" --msgbox "您输入的IP地址可能有误,请您检查后再次输入!." 10 60
  20. Prompt
  21. fi
  22. }
  23. function install_nginx(){
  24. (whiptail --title "安装 Nginx?(yes/no)" --yesno "你是否需要安装Nginx?" 10 60)
  25. if [ $? -eq 0 ];then
  26. {
  27. sleep 1
  28. echo 5
  29. apt-get update >/dev/null
  30. sleep 1
  31. echo 10
  32. sudo apt-get -y install build-essential >/dev/null &
  33. sleep 1
  34. echo 30
  35. sudo apt-get -y install openssl libssl-dev >/dev/null &
  36. sleep 1
  37. echo 50
  38. sudo apt-get -y install libpcre3 libpcre3-dev >/dev/null &
  39. sleep 1
  40. echo 70
  41. sudo apt-get -y install zlib1g-dev >/dev/null &
  42. sleep 1
  43. echo 90
  44. wget -q http://nginx.org/download/nginx-1.12.2.tar.gz >/dev/null
  45. sleep 1
  46. echo 95
  47. useradd -M -s /sbin/nologin nginx &
  48. tar zxf /root/nginx-1.12.2.tar.gz && cd /root/nginx-1.12.2/ &&
  49. ./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
  50. /usr/local/nginx/sbin/nginx &>/dev/null &
  51. sleep 100
  52. } | whiptail --gauge "正在安装Nginx,过程可能需要几分钟请稍后.........." 6 60 0 && whiptail --title "Nginx安装成功提示!!!" --msgbox "恭喜您Nginx安装成功,请您访问:http://$IP:80, 感谢使用~~~" 10 60
  53. else
  54. whiptail --title "Nginx提示!!!" --msgbox "感谢使用~~~" 10 60
  55. exit 1
  56. fi
  57. }
  58. function mail(){
  59. ip_check
  60. install_nginx
  61. }
  62. mail

希望对您有所帮助~~~~

使用whiptail构建可视化脚本简单案例安装Nginx服务.md - 图11