无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4551|回复: 4
打印 上一主题 下一主题

有没有人写shell下的菜单

  [复制链接]
跳转到指定楼层
1#
发表于 2007-10-26 08:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
类似于DOS启动盘的菜单,可以选择自己需要的功能。
最近在玩centos 5.0,写了一个很简单的文本菜单,其功能也就是方便在shell下执行各种需要的操作,而不用去记那些烦琐的操作。
目前还无法用光条上下左右移动操作,只能输入文字。
有兴趣的朋友可以与我QQ交流一下。

Snap1.jpg (9.32 KB, 下载次数: 171)

Snap1.jpg
2#
 楼主| 发表于 2007-10-28 15:13:26 | 只看该作者
这是我写的菜单代码,上传来,大家一起研究一下。


  1. #############################################################
  2. #                                                           #
  3. #                 无忧启动Linux菜单管理系统                 #
  4. #                                                           #
  5. #                   版本: 0.1.2007.10.28                    #
  6. #                                                           #
  7. #                        作者:周爱龙                        #
  8. #                                                           #
  9. #                   http://www.wuyou.com                    #
  10. #                                                           #
  11. #                                                           #
  12. #############################################################
  13.                                                            
  14. #                        开发初衷                           
  15. #                                                           
  16. #        Linux 系统的管理员,对于大量命令,大为头痛,经常   
  17. #  为重复的工作浪费大量时间。                              
  18. #      为此,现将一些日常维护工作用,菜单形式列出,加上友   
  19. #  好的中文提示,傻瓜式操作,最大程度减少工作量。           
  20. #      由于各人的需求不同,系统的设置不一,为了安全起见,   
  21. #  建议使用者先在虚拟机下做严格测试,通过以后,再在实机上   
  22. #  使用。数据安全非常重要呵!
  23. #      本人水平有限,第一次写shell程序,请各位大家多多指
  24. #  点,让我们的工作更轻松一点。
  25. #                 
  26. #                                                           
  27. #                        适用对象                           
  28. #                                                           
  29. #      1.Linux虚拟主机管理员。                              
  30. #      2.一切Linux系统的爱好者。                           
  31. #      3.一切想偷懒的人!                                             
  32. #                                                           
  33. #                        适用系统                           
  34. #                                                           
  35. #      1.RedHat Linux 7.3、CentOS 5.0
  36. #      2.在虚拟机和SecureCRT下测试正常。
  37. #      3.其他操作系统未做测试。                 
  38. #                                                           
  39. #                        环境参数                           
  40. #      1.磁盘结构:                                          
  41. #       ┌─ root ─ 本文件                                         
  42. #       │                       ┌─ others(临时目录)      
  43. #       │          ┌─ user1 ─┼─ wwwroot(网站根目录)   
  44. #       │          │           └─ logs(非必须)         
  45. #       │          │                                       
  46. #       │          │           ┌─ others(临时目录)      
  47. #       ├─ home ─┼─ user2 ─┼─ wwwroot(网站根目录)
  48. #       │          │     .     └─ logs(非必须)
  49. #       │          │     .
  50. #       │          │     .   
  51. #       │          ├─ userN ..........................                           
  52. #       │          │   
  53. #       │          │   
  54. #       │          ├─ mysql (此目录为/var/lib/mysql移过来)
  55. #       │          │
  56. #
  57. #
  58. # 获取设置mysql目录的位置
  59.          
  60. if [ -d "/home/mysql/mysql" ];then
  61.   mysqldir="home/mysql"
  62. else
  63.   mysqldir="var/lib/mysql"
  64. fi
  65. #until
  66.     echo
  67.     echo "  ┌────────  数据管理系统  ────────┐"
  68.     echo "  │                                                │"
  69.     echo "  │    1. 导出MYSQL数据        4. 打包网站目录     │"
  70.     echo "  │    2. 导入MYSQL数据        5. 恢复网站目录     │"
  71.     echo "  │    3. 恢复MYSQL数据        6. 解开压缩文件     │"
  72.     echo "  │                                                │"
  73.     echo "  └────────────────────────┘"
  74.     echo
  75.     echo -n "                   选择[1-6]:"
  76.     read choice
  77.     echo
  78. #    test $choice = 10
  79. #    do
  80.         case $choice in
  81.         1) echo 现在将导出MYSQL数据到用户others目录中!
  82.            echo -n 请输入用户名:
  83.            read username
  84.            gogo="y"
  85.            if [ -d "/$mysqldir/$username" ];then
  86.               if [ -f "/home/$username/others/$username.sql" ];then
  87.                  echo /home/$username/others/$username.sql 已经存在.
  88.                  echo -n 你确认要删除并导出数据库吗?[y/n]:
  89.                  read yn
  90.                  if [ "$yn" = "y" ];then
  91.                    rm -rf /home/$username/others/$username.sql
  92.                  else
  93.                    gogo="n"
  94.                  fi
  95.               fi
  96.               if [ "$gogo" = "y" ];then
  97.                  mysqldump -u $username -p $username > /home/$username/others/$username.sql
  98.                  chown $username.clients /home/$username/others/$username.sql
  99.                  echo 用户数据导出成功,请用FTP下载others目录下的$username.sql。
  100.               fi
  101.            else
  102.               echo /$mysqldir/$username 数据库不存在,请检查!
  103.            fi
  104.            ;;
  105.         2) echo 现在将导入MYSQL数据!
  106.            echo -n 请输入用户名:
  107.            read username
  108.            if [ -d "/$mysqldir/$username" ];then
  109.               ls /home/$username/wwwroot/*.sql
  110.               echo 当前文件路径: /home/$username/wwwroot
  111.               echo -n 请输入要导入的数据库文件名[.sql]:
  112.               read filename
  113.               if [ -f "/home/$username/wwwroot/$filename.sql" ];then
  114.                  if [ ! $(ls -al /$mysqldir/$username | wc -l) = 3 ];then
  115.                     echo /$mysqldir/$username 目录非空.
  116.                     echo -n 你确认要删除原有的数据库,并导入新的数据库吗?[y/n]:
  117.                     read yn
  118.                     if [ "$yn" = "y" ];then
  119.                        rm -rf /$mysqldir/$username/*
  120.                        service mysqld restart
  121.                        mysql -u $username $username -p < /home/$username/wwwroot/$filename.sql
  122.                     fi
  123.                  else
  124.                     mysql -u $username $username -p < /home/$username/wwwroot/$filename.sql
  125.                  fi
  126.               else
  127.                  echo /home/$username/wwwroot/$filename.sql 数据库文件不存在
  128.               fi
  129.            else
  130.               echo 33m/$mysqldir/$username 用户不存在,请检查!
  131.            fi
  132.            ;;
  133.         3) echo 警告: 现在将恢复以前备份的MYSQL数据!
  134.            echo 你必须先停止此用户的网站WEB.
  135.            echo -n 请输入用户名:
  136.            read username
  137.            if [ -d "/home/$username" ];then
  138.               ls /backup/vhost?.tar.gz -al
  139.               echo -n 请选择要恢复哪一份MYSQL数据?[0-4]:
  140.               read vhostn
  141.               if [ -s "/backup/vhost$vhostn.tar.gz" ];then
  142.                  echo -n 您选择的是用户 $username 的第 $vhostn 号MYSQL数据,请确认?[y/n]:
  143.                  read yn
  144.                  if [ "$yn" = "y" ];then
  145.                     rm -rf /$mysqldir/$username/*.*
  146.                     cd /
  147.                     tar -zxvpf /backup/vhost$vhostn.tar.gz $mysqldir/$username
  148.                     cd /root
  149.                     echo
  150.                     service mysqld restart
  151.                     echo 用户MYSQL数据恢复成功,请启动用户的网站WEB!
  152.                  fi
  153.               else
  154.                  echo $vhostn 号数据不存在,请检查!
  155.               fi
  156.            else
  157.               echo /$mysqldir/$username 用户不存在,请检查!
  158.            fi
  159.            ;;
  160.         4) echo 现在压缩打包wwwroot下网站数据.
  161.            echo 请输入用户名:
  162.            read username
  163.            if [ -d "/home/$username/wwwroot" ];then
  164.               if [ -s "/home/$username/others/$username.tar.gz" ];then
  165.                  echo "/home/$username/others/$username.tar.gz" 已经存在。
  166.                  echo 你确认要替换它吗?
  167.                  read yn
  168.                  if [ "$yn" = "y" ];then
  169.                     rm -rf /home/$username/others/$username.tar.gz
  170.                     tar -cvzf /home/$username/others/$username.tar.gz /home/$username/wwwroot
  171.                     echo $username 的网站数据打包成功!
  172.                  fi
  173.               else
  174.                  tar -cvzf /home/$username/others/$username.tar.gz /home/$username/wwwroot
  175.                  echo $username 的网站数据打包成功!
  176.               fi
  177.            else
  178.              echo $username 用户不存在,请检查!
  179.            fi
  180.            ;;
  181.         5) echo 警告: 现在将恢复以前备份的wwwroot下网站数据.
  182.            echo 你必须先停止此用户的网站WEB.
  183.            echo 请输入用户名:
  184.            read username
  185.            if [ -d "/home/$username/wwwroot" ];then
  186.               ls /backup/vhosthome?.tar.gz -al
  187.               echo 请选择要恢复哪一份网站数据?[0-4]
  188.               read vhostn
  189.               if [ -s "/backup/vhosthome$vhostn.tar.gz" ];then
  190.                  echo 您选择的是用户 $username 的第 $vhostn 号网站数据,请确认?[y/n]
  191.                  read yn
  192.                  if [ "$yn" = "y" ];then
  193.                     rm -rf /home/$username/wwwroot/*
  194.                     cd /
  195.                     tar -zxvpf /backup/vhosthome$vhostn.tar.gz home/$username/wwwroot
  196.                     echo
  197.                     echo $username 的网站数据恢复成功!
  198.                     echo 请启动用户的网站WEB.
  199.                  fi
  200.               else
  201.                  echo $vhostn 号数据不存在,请检查!
  202.               fi
  203.            fi
  204.            cd /root
  205.            ;;
  206.         6) echo 输入用户名:
  207.            read username
  208.            if [ -d /home/$username/wwwroot ];then
  209.               ls /home/$username/wwwroot/*.zip
  210.               echo 输入文件名[.zip]:
  211.               read filename
  212.               if [ -s /home/$username/wwwroot/$filename.zip ];then
  213.                  ls /home/$username/wwwroot
  214.                  echo 输入要解压的临时目录:
  215.                  read tempdir
  216.                  if [ ! -d /home/$username/wwwroot/$tempdir ];then
  217.                      cd /home/$username/wwwroot
  218.                      mkdir $tempdir
  219.                      mv $filename.zip $tempdir/$filename.zip
  220.                      cd $tempdir
  221.                      unzip $filename
  222.                      cd ..
  223.                      chown $username.clients -R $tempdir
  224.                      echo 文件已经解压到wwwroot下的$tempdir目录,请移动!
  225.                      ls $tempdir
  226.                      echo 如果你要手工处理数据吗?[y/n]
  227.                      read yn
  228.                      if [ "$yn" = "y" ];then
  229.                         cd $tempdir
  230.                      else
  231.                         cd /root
  232.                      fi
  233.                  else
  234.                      echo 临时目录已经存在,请检查!
  235.                  fi
  236.               else
  237.                  echo 文件不存在,请检查!
  238.               fi
  239.            else
  240.               echo $username 用户不存在,请检查!
  241.            fi
  242.            ;;
  243.         q|Q) echo 退出菜单;;
  244.         *) echo 选项不存在,退出菜单  
  245.     esac
  246. #done
复制代码

0.1.2007071027

10.49 KB, 下载次数: 238, 下载积分: 无忧币 -2

点评

dialog是一个很好的工具,可以试试符不符合你的要求。 举个例子:  详情 回复 发表于 2023-4-19 00:48
回复

使用道具 举报

3#
发表于 2007-10-31 22:45:16 | 只看该作者
你这个好像和setup包功能一样。
回复

使用道具 举报

4#
发表于 2007-11-7 12:46:42 | 只看该作者
shell下的东西,俺正在学:lol
回复

使用道具 举报

5#
发表于 2023-4-19 00:48:55 | 只看该作者
wuyou 发表于 2007-10-28 15:13
这是我写的菜单代码,上传来,大家一起研究一下。

dialog是一个很好的工具,可以试试符不符合你的要求。

  1. dialog --menu <text> <height> <width> <menu-height> [<tag><item>]
复制代码


举个例子:
  1. #!/bin/bash
  2. TMPFILE=$(mktemp)

  3. dialog --menu "Choose one:" 10 30 3 \
  4.     1 Red \
  5.     2 Green \
  6.     3 Blue 2>$TMPFILE

  7. RESULT=$(cat $TMPFILE)

  8. case $RESULT in
  9.     1) echo "Red";;
  10.     2) echo "Green";;
  11.     3) echo "Blue";;
  12.     *) echo "Unknown color";;
  13. esac

  14. rm $TMPFILE
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-10 17:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表