免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6755 | 回复: 18
打印 上一主题 下一主题

[SCO UNIX] N年以前学习SHELL时写的系统管理. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-08 20:38 |只看该作者 |倒序浏览
  1.                  ###############################
  2.                  # 程序名   : 系 统 管 理      #
  3.                  # 版本     : 1.0              #
  4.                  # 编写日间 : 2000.02.25       #
  5.                  # 程序设计 : Hbczjzc          #
  6.                  # Email    : hhh_kkk@21cn.com #
  7.                  ###############################
  8. trap '' 1 2 3 15
  9. USER=chuxu
  10. FBXS=`tput smso`
  11. QXSX=`tput rmso`
  12. OFF=off
  13. ERRUSER=tty
  14. ACTI=respawn
  15. com=注册用户
  16. color1=`setcolor -r yellow red`
  17. color2=`setcolor -r yellow magenta`
  18. color3=`setcolor -r hi_white blue`
  19. export com color1 color2 color3 OFF ACTI USER
  20. setcolor -n
  21. tty >;list_termi
  22. l /unix >;/tmp/check_unix
  23. unix_stat=`cat /tmp/check_unix | awk '{print $5}'`  
  24. termial=`cat list_termi | awk '{print $1}'`  
  25. pass=` awk ' { nc+=length($0) } END {print nc+NR}' /etc/xtgl`
  26. colorset1()
  27. {
  28. echo "$color1"
  29. }
  30. colorset2()
  31. {
  32. echo "$color2"
  33. }
  34. colorset3()
  35. {
  36. echo "$color3"
  37. }
  38. getc()
  39. {
  40.         stty raw
  41.         tmp=`dd bs=1 count=1 2>;/dev/null`
  42.         eval $1='$tmp'
  43.         stty cooked
  44. }
  45. getchar()
  46. {
  47.         stty raw
  48.         tmp=`dd bs=1 count=5 2>;/dev/null`
  49.         eval $1='$tmp'
  50.         stty cooked
  51. }
  52. getyn() {
  53.         while        read yn
  54.         do        case $yn in
  55.                 [yY])        return 0                         ;;
  56.                 [nN])        return 1                        ;;
  57.                 *)        prompt
  58.                         read key
  59.                         return 1 ;;
  60.                 esac
  61.         done
  62. }
  63. error() {
  64.         echo "\n"
  65.         echo "\007\n\t\t       ? 非  法  选  择!"
  66.                 colorset1
  67.                   prompt
  68.                   getc key
  69.         return 0
  70. }

  71. prompt() {
  72.         echo "\n\n\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  73. }
  74. prom() {
  75.         colorset2
  76.         echo "\n\n\n\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  77.         read key
  78. }
  79. check_pass()
  80. {
  81.         clear
  82.   echo "管    理    员:[${FBXS}Admin${QXSX}]\n"
  83.         #stty -echo
  84.   echo "请 输 入 密 码:[*****]"
  85.         setcolor -b black -k black
  86.         echo "\c "
  87.         #read password
  88.         getchar password
  89.         if [ $password = "${pass}" ]
  90.         then
  91.         setcolor -b black -k white
  92.         #stty echo
  93.         user_menu
  94.         #mkuser
  95.         return 0
  96.         else
  97.         setcolor -b black -k white
  98.         #stty echo
  99.   echo "\007${FBXS}密码错误!${QXSX}\b\c"
  100.         fi
  101.         sleep 2
  102. }
  103. creat_user ()
  104. {
  105. sort +2 -n -t: /etc/passwd >;/etc/passwd.sort
  106. uid=`tail -1 /etc/passwd.sort | awk -F: '{print $3}'`
  107. uid=`expr $uid + 1`
  108.                 if [ $uid -lt 100 ]
  109.                 then
  110.                 #echo "\n\n\n\007${FBXS}Passwd 文件错误!!!${QXSX}"
  111.                 #return 1
  112.                 uid=200
  113.                 export uid
  114.                 echo "\n\n\n请稍后......\c"
  115. /etc/useradd -m -d ${home} -s ${newshell} -u ${uid} -G ${GROUP} -c "${com}" ${user} >;/dev/null 2>;&1
  116.                 passwd -d $user >;/dev/null 2>;&1
  117.                 else
  118.                 echo "\n\n\n请稍后......\c"
  119. /etc/useradd -m -d ${home} -s ${newshell} -u ${uid} -G ${GROUP} -c "${com}" ${user} >;/dev/null 2>;&1
  120. #cp /etc/group /etc/group-
  121. #sed -e '/:50:/ s/\(.*\)/\1,'$user'/' /etc/group- >; /etc/group
  122. passwd -d $user >;/dev/null 2>;&1
  123.                 fi
  124. }
  125. adduser()
  126. {
  127. #        [ $# -lt 1 ] && {
  128.         #echo "\n\n\n调用格式: 用户注册名[ 注释内容 ]"
  129.         #return 1
  130.                         #}
  131. user=$1
  132. newshell=$2
  133. GROUP=$3
  134. home=/usr/$1
  135.     echo -n "\n\n是否创建 ${FBXS}$user${QXSX} 用户(1/0)? 【 】?\b\b\b\b\b"
  136.         getc opt
  137.         case $opt in
  138.         y|Y|1) creat_user ;;
  139.         n|N|0) return 1 ;;
  140.         *) return 1 ;;
  141.         esac
  142. }
  143. mkuser ()
  144. {
  145.                         colorset1
  146.                  clear
  147.                 echo "\n\n"
  148.                 echo "请 输 入 新 用 户 名: \c"
  149.                 read user
  150.                 #user=${user:-"error.user"}
  151.                 if [ "$user" ]
  152.                 then
  153.                 :
  154.                 else
  155.                 return 0
  156.                 fi
  157. a=`awk -F: '$1=="'$user'" {print $1}' /etc/passwd 2>;/dev/null`
  158. [ "$a" ] && {
  159. echo "\007系统中已有 ${FBXS}$user${QXSX} 用户!!!\c"
  160.         echo "\n\n\n\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  161.         getc key
  162.                 return 0  
  163. }
  164.                 a=`expr $user : '[a-z].*' 2>;/dev/null`
  165.                         if [ $? != 0 ]
  166.                         then
  167.                         echo "\n\n\007用户名不合法!!!";
  168.                         prompt
  169.                         read key
  170.                         return 0  
  171.                                 #continue
  172.                         fi
  173. { [ $a -lt 3 ] || [ $a -gt 8 ] || [ `expr $user : '[^a-z0-9_]*'` -ne 0 ] ;} && {
  174.                         echo "\n\n\007用户名不合法!!!";
  175.                 prompt
  176.                 read key
  177.                 return 0  
  178.                 }
  179. echo -n "\n\n请输入执行的 SHELL: (1.sh 2.ksh 3.csh 4.scosh)? 【 】?\b\b\b\b\b"
  180.         getc shell
  181.         case $shell in
  182.         1) shell=/bin/sh;export shell ;;
  183.         2) shell=/bin/ksh;export shell ;;
  184.         3) shell=csh;export shell ;;
  185.         4) shell=/usr/bin/scosh;export shell ;;
  186.         *) shell=/bin/sh;export shell ;;
  187.         esac
  188.         #echo "\n"
  189.   #echo "例: ksh csh /usr/bin/scosh 缺省是 sh"
  190.         #echo "\c "
  191. echo "请输入该用户的属组: \c"
  192.                 read newgroup
  193.                 newgroup=${newgroup:-"group"}
  194. g=`awk -F: '$1=="'$newgroup'" {print $1}' /etc/group 2>;/dev/null`
  195. if [ "$g" ]
  196. then
  197. :
  198. else
  199. newgroup=group
  200. export newgroup
  201. fi
  202. adduser ${user} ${shell} ${newgroup} && sleep 1 && echo "\n\n\n创建用户成功. √" || echo "\n\n\n\007创建用户失败!!!"
  203.         prompt
  204.         getc key
  205. }
  206. rmuser () {
  207.                         colorset3
  208.                  clear
  209.                 echo "\n\n"
  210.                 echo "请 输 入 删 除 用 户 名: \c"
  211.                 read del_user
  212.                 if [ "$del_user" ]
  213.                 then
  214.                 :
  215.                 else
  216.                 return 0
  217.                 fi
  218. awk -F: '$1=="'$del_user'" {print $0}' /etc/passwd >;/etc/find_user 2>;/dev/null
  219. if [ -s /etc/find_user ]
  220. then
  221. uid=`cat /etc/find_user | awk -F: '{print $3}'`
  222.                 if [ $uid -lt 100 ]
  223.                 then
  224. echo "\007你不能够删除 ${FBXS}系统用户${QXSX} !!!"
  225.                 prompt
  226.                 getc key
  227.                 return 1
  228.                 else
  229.     echo -n "\n\n是否删除 ${FBXS}$del_user${QXSX} 用户(1/0)? 【 】?\b\b\b\b\b"
  230.         getc opt
  231.         case $opt in
  232.         y|Y|1) : ;;
  233.         n|N|0) return 1 ;;
  234.         *) return 1 ;;
  235.         esac
  236. echo "请稍后......\c"
  237. userdel $del_user >;/dev/null 2>;&1 && sleep 1 && echo "\n\n\n删除用户成功. √" || echo "\n\n\n\007删除用户失败!!!"
  238.                 fi
  239. echo "\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  240.         getc key
  241. else
  242. echo "\007输入用户名错误!!!"
  243.         prompt
  244.         getc key
  245. fi
  246. }
  247. addgroup()
  248. {
  249.                         colorset1
  250.                  clear
  251.                 echo "\n\n"
  252.                 echo "请 输 入 新 用 户 组: \c"
  253.                 read add_group
  254.                 if [ "$add_group" ]
  255.                 then
  256.                 :
  257.                 else
  258.                 return 0
  259.                 fi
  260. awk -F: '$1=="'$add_group'" {print $0}' /etc/group >;/etc/find_group 2>;/dev/null
  261.    if [ -s /etc/find_group ]
  262.    then
  263. echo "\007系统中已有 ${FBXS}$add_group${QXSX} 用户组!!!"
  264.         prompt
  265.         getc key
  266.    else
  267. echo -n "\n\n是否创建 ${FBXS}$add_group${QXSX} 用户组(1/0)? 【 】?\b\b\b\b\b"
  268.         getc opt
  269.         case $opt in
  270.         y|Y|1) : ;;
  271.         n|N|0) return 1 ;;
  272.         *) return 1 ;;
  273.         esac
  274. gid=`tail -1 /etc/group | awk -F: '{print $3}'`
  275. gid=`expr $gid + 10`
  276. echo "请稍后......\c"
  277. /etc/groupadd -g ${gid} -o $add_group >;/dev/null 2>;&1 && sleep 1 && echo "\n\n\n创建用户组成功. √" || echo "\n\n\n\007创建用户组失败!!!"
  278.         #group_add $add_group
  279.         prompt
  280.         getc key
  281. fi
  282. }
  283. rmgroup () {
  284.                         colorset3
  285.                  clear
  286.                 echo "\n\n"
  287.                 echo "请 输 入 删 除 用 户 组: \c"
  288.                 read del_group
  289.                 if [ "$del_group" ]
  290.                 then
  291.                 :
  292.                 else
  293.                 return 0
  294.                 fi
  295. awk -F: '$1=="'$del_group'" {print $0}' /etc/group >;/etc/find_group 2>;/dev/null
  296.    if [ -s /etc/find_group ]
  297.    then
  298.                 gid=`cat /etc/find_group | awk -F: '{print $3}'`
  299.                 if [ $gid -lt 51 ]
  300.                 then
  301.         echo "\007你不能够删除 ${FBXS}系统原有${QXSX} 的用户组!!!"
  302.                 prompt
  303.                 getc key
  304.                 return 1
  305.                 else
  306.                 :
  307.                 fi
  308.     echo -n "\n\n是否删除 ${FBXS}$del_group${QXSX} 用户组(1/0)? 【 】?\b\b\b\b\b"
  309.         getc opt
  310.         case $opt in
  311.         y|Y|1) : ;;
  312.         n|N|0) return 1 ;;
  313.         *) return 1 ;;
  314.         esac
  315. echo "请稍后......\c"
  316. groupdel $del_group >;/dev/null 2>;&1 && sleep 1 && echo "\n\n\n删除用户组成功. √" || echo "\n\n\n\007删除用户组失败!!!"
  317.         prompt
  318.         getc key
  319. else
  320. echo "\007输入用户组错误!!!"
  321.         prompt
  322.         getc key
  323. fi
  324. }
  325. enable_termi()
  326. {
  327. while [ $1 ]
  328. do
  329.                                 if [ -r "/dev/$1" -a "$1" ]
  330.                                 then
  331. cat /etc/inittab | grep $1 >;find_tty
  332. cat find_tty | awk '{print $1}' >;stat_tty
  333. from ()
  334. {
  335. awk ' BEGIN { FS = ":" ; OFS = ":"}
  336. {
  337. print $3
  338. }' stat_tty
  339. }
  340. from >;termial
  341. stty=`cat termial | awk '{print $1}'`
  342. if [ $OFF = ${stty} ]
  343. then
  344.                         ps -t $1 >;/tmp/pro_list  
  345.                         list_pro=`cat /tmp/pro_list | awk '{print $1}'`  
  346.                         for process in $list_pro
  347.                         do
  348.                         kill -9 $process >;/dev/null 2>;&1
  349.                         done
  350.                                         /usr/bin/enable $1 >;/dev/null
  351. echo "\n"
  352. echo  "终端 ${FBXS}$1${QXSX} 已被激活. √"
  353. fi
  354. if [ $ACTI = ${stty} ]
  355. then
  356. echo "\n"
  357. echo "\007终端 $1 已经激活!!!!"
  358. fi
  359.                                 else
  360.                                 echo "\n"
  361. echo  "\007无效的 $1 终端!!!"
  362.                                 fi
  363.                 shift
  364. done
  365. }

  366. enable_tty()
  367. {
  368. colorset2
  369.         clear
  370.       echo "\n"
  371.       echo "激  活  串  口  终  端\n"
  372.       echo "\n串  口  号 : \c"
  373.         read termi_code
  374.         enable_termi $termi_code
  375.                   prompt
  376.                   read key
  377. }
  378. disable_termi()
  379. {
  380. while [ $1 ]
  381. do
  382.                                 if [ -r "/dev/$1" -a "$1" ]
  383.                                 then
  384. cat /etc/inittab | grep $1 >;find_tty
  385. cat find_tty | awk '{print $1}' >;stat_tty
  386. from ()
  387. {
  388. awk ' BEGIN { FS = ":" ; OFS = ":"}
  389. {
  390. print $3
  391. }' stat_tty
  392. }
  393. from >;termial
  394. stty=`cat termial | awk '{print $1}'`
  395. if [ $ACTI = ${stty} ]
  396. then
  397.                         ps -t $1 >;/tmp/pro_list  
  398.                         list_pro=`cat /tmp/pro_list | awk '{print $1}'`  
  399.                         for process in $list_pro
  400.                         do
  401.                         kill -9 $process >;/dev/null 2>;&1
  402.                         done
  403.                                         /usr/bin/disable $1 >;/dev/null
  404. echo "\n"
  405. echo "终端 ${FBXS}$1${QXSX} 已被关闭. √"
  406. fi
  407. if [ $OFF = ${stty} ]
  408. then
  409. echo "\n"
  410. echo "\007终端 $1 已经关闭!!!"
  411. fi
  412.                                 else
  413.                                 echo "\n"
  414.                                 echo "\007无效的 $1 终端!!!"
  415.                                 fi
  416.                 shift
  417. done
  418. }
  419. disable_tty()
  420. {
  421. colorset2
  422. clear
  423.                               echo "\n"
  424.                                 echo "关  闭  串  口  终  端\n"
  425.                                 echo "\n串  口  号 : \c"
  426.                                 read termi_code
  427.                         disable_termi $termi_code
  428.                   prompt
  429.                   read key
  430. }
  431. cancel_printer()
  432. {
  433. clear
  434.                            echo "\n\n"
  435.                              echo "系统将要终止打印机进程.\n"
  436.                              lpstat -u >;/etc/pp            
  437.                              if [ -s /etc/pp ]
  438.                              then
  439.                              list=`cat /etc/pp | awk '{print $1}'`
  440.                              echo "请稍候......\n"           
  441.                              for jjj in $list
  442.                              do
  443.                                   cancel $jjj
  444.                              done
  445.                              else
  446.                              echo "\n"
  447.                              echo "\007没有打印机进程!!!\n"
  448.                              fi
  449.                   prompt
  450.                   read key
  451. }
  452. command()
  453. {
  454.         /usr/lib/lpadmin -p $new_printer -m epson -v /dev/lp0 2>;/dev/null
  455.         /usr/lib/lpadmin -d $new_printer >;/dev/null 2>;&1
  456.         /usr/lib/lpsched $new_printer >;/dev/null 2>;&1
  457.         /usr/bin/enable $new_printer >;/dev/null 2>;&1
  458.         /usr/bin/accept $new_printer >;/dev/null 2>;&1
  459. }
  460. check_stat()
  461. {
  462. l /unix >;/tmp/check_unix1
  463. unix_stat1=`cat /tmp/check_unix1 | awk '{print $5}'`  
  464. if [ $unix_stat -ne $unix_stat1 ]
  465. then
  466. sync;sync;sync
  467. reboot
  468. else
  469. :
  470. fi
  471. }
  472. add_printer()
  473. {
  474.                         colorset1
  475.                  clear
  476.                 echo "\n\n"
  477.                 echo "请 输 入 新 打 印 机 名: \c"
  478.                 read new_printer
  479.                 #new_printer=${new_printer:-"printer"}
  480.                 if [ "$new_printer" ]
  481.                 then
  482.                 :
  483.                 else
  484.                 return 0
  485.                 fi
  486.                 hwconfig name=parallel >;/tmp/printer_stat
  487.                 if [ -s /tmp/printer_stat ]
  488.                 then
  489.                 :
  490.                 else
  491.                 echo "\n\n\007请先选择隐含选项 9 增加并行端口驱动程序."
  492.                 prompt
  493.                 getc key
  494.                 break
  495.                 fi
  496.                 /usr/bin/lpstat -a >;/tmp/stat_print
  497.                 hwconfig name=parallel >;/tmp/printer_stat
  498.                 list_print=`cat /tmp/stat_print | awk '{print $1}'`  
  499.                 if [ -s /tmp/stat_print and -s /tmp/printer_stat ]
  500.                 then
  501.                 echo "\n\n\007系统已存在 ${FBXS}$list_print${QXSX} 打印机!!!"
  502.                 prompt
  503.                 getc key
  504.                 else
  505.     echo -n "\n\n是否增加 ${FBXS}${new_printer}${QXSX} 打印机(1/0)? 【 】?\b\b\b\b\b"
  506.         getc opt
  507.         case $opt in
  508.         y|Y|1) : ;;
  509.         n|N|0) return 1 ;;
  510.         *) return 1 ;;
  511.         esac
  512. echo "请稍后......\c"
  513. command && sleep 1 && echo "\n\n\n增加打印机成功. √" || echo "\n\n\n\007增加打印机失败!!!"
  514.         prompt
  515.         getc key
  516. fi
  517. }
  518. del_printer()
  519. {
  520.                         colorset3
  521.                  clear
  522.                 echo "\n\n"
  523.                 echo "请 输 入 原 打 印 机 名: \c"
  524.                 read old_printer
  525.                 if [ "$old_printer" ]
  526.                 then
  527.                 :
  528.                 else
  529.                 return 0
  530.                 fi
  531.                 /usr/bin/lpstat -a >;/tmp/stat_print
  532.                 list_print=`cat /tmp/stat_print | awk '{print $1}'`  
  533. if [ "$list_print" = "$old_printer" ]
  534. then
  535. echo -n "\n\n是否删除 ${FBXS}${old_printer}${QXSX} 打印机(1/0)? 【 】?\b\b\b\b\b"
  536.         getc opt
  537.         case $opt in
  538.         y|Y|1) : ;;
  539.         n|N|0) return 1 ;;
  540.         *) return 1 ;;
  541.         esac
  542. echo "请稍后......\c"
  543. /usr/lib/lpadmin -x ${old_printer} >;/dev/null 2>;&1 && sleep 1 && echo "\n\n\n删除打印机成功. √" || echo "\n\n\n\007删除打印机失败!!!"
  544.         prompt
  545.         getc key
  546. else
  547.                 echo "\n\n\007系统中没有 ${FBXS}$old_printer${QXSX} 打印机!!!"
  548.                 prompt
  549.                 getc key
  550. fi
  551. }
  552. ku() {
  553.           clear
  554.           echo "\n\n"
  555.           echo "请输入杀死用户名 (例: ywqt): \c"
  556.           read user
  557.    if [ "$user" ]
  558.    then
  559.    :
  560.    else
  561.    return 0
  562.    fi
  563.           who | grep $user >;/tmp/user_list
  564.        if [ -s /tmp/user_list -a $user != "${ERRUSER}" ]
  565.         then
  566. ps -ef|grep $user |grep -v "grep"|awk '{print $2}'|tr '\n' '\t'|awk '{print "kill -9",$0}'|sh
  567. echo "所有 ${FBXS}$user${QXSX} 用户的进程被杀死! √"
  568.              prompt
  569.              read key
  570.         else
  571.                         echo "\n"
  572. echo     用户 $user 没有注册!!!
  573.              prompt
  574.              read key
  575.         fi
  576.           #set `who -H | grep $user` 2>;&1 >;/dev/null
  577.           #set `who -u|grep $2|sort` 2>;&1 >;/dev/null
  578.                   #if test $7
  579.                      #then kill -9 $7 && echo "用户" $user "的进程被杀死!"
  580.                      #else echo 用户 $user 上无进程
  581.                   #prompt
  582.                   #read key
  583.                   #fi
  584.         #fi
  585. }

  586. prokill() {
  587.           clear
  588.           echo "\n\n"
  589.           echo "请输入终端设备名 (例: tty2a): \c"
  590.           read ttyname
  591.    if [ "$ttyname" ]
  592.    then
  593.    :
  594.    else
  595.    return 0
  596.    fi
  597.         if [ -r "/dev/$ttyname" -a "$ttyname" ]
  598.         then
  599.           set `who -u|grep $ttyname|sort` >;/dev/null
  600.                 if test $7
  601.                      then
  602.                         ps -t $ttyname >;/tmp/pro_list  
  603.                         list_pro=`cat /tmp/pro_list | awk '{print $1}'`  
  604.                         for process in $list_pro
  605.                         do
  606.                         kill -9 $process >;/dev/null 2>;&1
  607.                         done
  608. kill -9 $7 2>;/dev/null && echo "\n" && colorset2 ; echo "终端 ${FBXS}$ttyname${QXSX} 的进程被杀死! √"
  609.                      else
  610.                         echo "\n"
  611. echo 终端 $ttyname 上无进程!!!
  612.                   fi
  613.                   prompt
  614.                   read key
  615.                                 else
  616.                                 #echo "\n"
  617.   echo "\007无效的终端!!!\n"
  618.                   prompt
  619.                   read key
  620.                 fi
  621.                 #ps -t tty10 >;/tmp/aaa
  622.                 #sed "/PID/d" /tmp/aaa >;/tmp/aaa.tmp
  623.                 #mv /tmp/aaa.tmp /tmp/aaa
  624.             #read line < /tmp/aaa
  625.             #set $line
  626.             #kill -9 $1
  627. }

  628. systime() {
  629.           clear
  630.           echo "\n"
  631.           echo "当前系统时间为: `date +'%Y年%m月%d日%H点%M分%S秒'`"
  632.           echo "\n"
  633. echo "请输入修改时间 (格式: 年月日点分):〖          〗     例:0011072142" ?
  634.         echo "\c "
  635.           read time
  636.                 if [ "$time" ]
  637.                 then
  638.                 :
  639.                 else
  640.                 return 0
  641.                 fi
  642. date -t $time >;/dev/null 2>;&1 && echo "\n" && echo "现在的系统时间: `date +'%Y年%m月%d日%H点%M分%S秒'`" || echo "\n\n\007输入格式不正确!!!"
  643.           prompt
  644.           read key
  645. }
  646. pr_enable ()
  647. {
  648.                         colorset1
  649.                  clear
  650.                 echo "\n\n"
  651.         /usr/bin/lpstat -a >;/tmp/stat_print 2>;/dev/null
  652.         list_print=`cat /tmp/stat_print | awk '{print $1}'`  
  653.         if [ "$list_print" ]
  654.         then
  655.     echo -n "\n\n是否激活 ${FBXS}$list_print${QXSX} 打印机(1/0)? 【 】?\b\b\b\b\b"
  656.         getc opt
  657.         case $opt in
  658.         y|Y|1) : ;;
  659.         n|N|0) return 1 ;;
  660.         *) return 1 ;;
  661.         esac
  662.         /usr/lib/lpsched $list_print >;/dev/null 2>;&1
  663.         /usr/bin/enable $list_print >;/dev/null 2>;&1
  664.         /usr/bin/accept $list_print >;/dev/null 2>;&1
  665. echo "打印机已被激活!!!\c"
  666. echo "\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  667.         getc key
  668.         else
  669.         echo "\007系统中不存在并行打印机!!!\c"
  670. echo "\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  671.         getc key
  672.         fi
  673. }
  674. pr_disable ()
  675. {
  676.                         colorset3
  677.                  clear
  678.                 echo "\n\n"
  679.         /usr/bin/lpstat -a >;/tmp/stat_print 2>;/dev/null
  680.         list_print=`cat /tmp/stat_print | awk '{print $1}'`  
  681.         if [ "$list_print" ]
  682.         then
  683.     echo -n "\n\n是否关闭 ${FBXS}$list_print${QXSX} 打印机(1/0)? 【 】?\b\b\b\b\b"
  684.         getc opt
  685.         case $opt in
  686.         y|Y|1) : ;;
  687.         n|N|0) return 1 ;;
  688.         *) return 1 ;;
  689.         esac
  690.         /usr/lib/lpshut $list_print >;/dev/null 2>;&1
  691.         /usr/bin/disable $list_print >;/dev/null 2>;&1
  692. echo "打印机已被关闭!!!\c"
  693. echo "\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  694.         getc key
  695.         else
  696.         echo "\007系统中不存在并行打印机!!!\c"
  697. echo "\033[7m 按  <回  车>;  继 续. \033[m ?\b\b\b\b\c"
  698.         getc key
  699.         fi
  700. }
  701. format_unix()
  702. {
  703. clear
  704. colorset1
  705. str="\n\n插入 ${FBXS}UNIX${QXSX} 磁盘,按回车开始格式化,按 q 键退出."
  706. while true
  707. do
  708.   #tput smso
  709.   echo -n $str
  710.                 #echo "\c "
  711.                 #read key
  712.   #tput rmso
  713.   x=" "
  714.   read x
  715.   if [ "$x" = "q" -o "$x" = "Q" ]
  716.   then
  717.      break
  718.   else
  719. echo -n "\n\n正在格式化......";format -f /dev/rfd0135ds18 >;/dev/null 2>;&1 && colorset2  && echo "\n\n格式化成功. √" || {
  720.      if [ $? != 0 ]
  721.      then
  722.         echo "\n\n"
  723.      str="\007盘未插好或盘已坏, 请再插盘, q 键退出, 回车键开始:\c"
  724.         continue
  725.      else
  726.         break
  727.      fi
  728. } #echo "\n\n\n\007格式化失败!!!"
  729.                   prompt
  730.                             read key
  731.                                 break
  732.      fi
  733. done
  734. }
  735. format_dos()
  736. {
  737. clear
  738. colorset3
  739. str="\n\n插入 ${FBXS}DOS${QXSX} 磁盘,按回车开始格式化,按 q 键退出."
  740. while true
  741. do
  742.   #tput smso
  743.   echo -n $str
  744.                 #echo "\c "
  745.                 #read key
  746.   #tput rmso
  747.   x=" "
  748.   read x
  749.   if [ "$x" = "q" -o "$x" = "Q" ]
  750.   then
  751.      break
  752.   else
  753. echo -n "\n\n正在格式化......";/usr/bin/dosformat -f /dev/rfd0135ds18 >;/dev/null 2>;&1 && colorset2 && echo "\n\n格式化成功. √" || {
  754.                              if [ $? != 0 ]
  755.                              then
  756.                                 echo "\n\n"
  757.                      str="\007盘未插好或盘已坏, 请再插盘, q 键退出, 回车键开始:\c"
  758.                                 continue
  759.                              else
  760.                                 break
  761.                              fi
  762. } #echo "\n\n\n\007格式化失败!!!"
  763.                   prompt
  764.                             read key
  765.                                 break
  766.      fi
  767. done
  768. }
  769. print_menu ()
  770. {
  771. while        clear
  772.   echo "┌────────────────────────────┐"
  773.   echo "│                ${FBXS}打 印 机 管 理 主 菜 单${QXSX}                 │"
  774.   echo "├────────────────────────────┤"
  775.   echo "│                                                        │"
  776.   echo "│                                                        │"
  777.   echo "│            1......... 终 止 打 印 机 进 程.            │"
  778.   echo "│                                                        │"
  779.   echo "│            2......... 激 活 并 行 打 印 机.            │"
  780.   echo "│                                                        │"
  781.   echo "│            3......... 关 闭 并 行 打 印 机.            │"
  782.   echo "│                                                        │"
  783.   echo "│            4......... 增 加 并 行 打 印 机.            │"
  784.   echo "│                                                        │"
  785.   echo "│            5......... 删 除 并 行 打 印 机.            │"
  786.   echo "│                                                        │"
  787.   echo "│            0..........退       出.                     │"
  788.   echo "│                                                        │"  
  789.   echo "├────────────────────────────┤"
  790.   echo "│                  请 选 择:【 】?                      │"
  791.   echo "└────────────────────────────┘"
  792.   echo "\c"  
  793. do        getc cmd
  794.         case $cmd in
  795.         1)        cancel_printer                        ;;
  796.         2)      pr_enable ;;
  797.         3)      pr_disable ;;
  798.         4)      add_printer                        ;;
  799.         5)      del_printer                        ;;
  800.         9)        mkdev parallel;check_stat        ;; #隐含选项: 设置硬件驱动程序
  801.         0|q)        clear
  802.                 return 1 ;;
  803.         #*)        error                ;;
  804.         esac
  805. done
  806. }
  807. termi_menu ()
  808. {
  809. while        clear
  810.   echo "┌────────────────────────────┐"
  811.   echo "│                  ${FBXS}终 端 管 理 主 菜 单${QXSX}                  │"
  812.   echo "├────────────────────────────┤"
  813.   echo "│                                                        │"
  814.   echo "│                                                        │"
  815.   echo "│            1......... 杀 死 指 定 终 端 上 的 进 程.   │"
  816.   echo "│                                                        │"
  817.   echo "│            2......... 关 闭 串 口 终 端.               │"
  818.   echo "│                                                        │"
  819.   echo "│            3......... 激 活 串 口 终 端.               │"
  820.   echo "│                                                        │"
  821.   echo "│            0..........退       出.                     │"
  822.   echo "│                                                        │"  
  823.   echo "├────────────────────────────┤"
  824.   echo "│                  请 选 择:【 】?                      │"
  825.   echo "└────────────────────────────┘"
  826.   echo "\c"  
  827. do        getc cmd
  828.         case $cmd in
  829.         1)        prokill                                ;;
  830.         2)      disable_tty                        ;;
  831.         3)      enable_tty                        ;;
  832.         9)        mkdev serial;check_stat                ;; #隐含选项: 设置硬件驱动程序
  833.         0|q)        clear
  834.                 return 1 ;;
  835.         #*)        error                ;;
  836.         esac
  837. done
  838. }
  839. user_menu ()
  840. {
  841. while        clear
  842.   echo "┌────────────────────────────┐"
  843.   echo "│                  ${FBXS}用 户 管 理 主 菜 单${QXSX}                  │"
  844.   echo "├────────────────────────────┤"
  845.   echo "│                                                        │"
  846.   echo "│                                                        │"
  847.   echo "│            1......... 增 加 注 册 用 户.               │"
  848.   echo "│                                                        │"
  849.   echo "│            2......... 删 除 注 册 用 户.               │"
  850.   echo "│                                                        │"
  851.   echo "│            3......... 增 加 注 册 组.                  │"
  852.   echo "│                                                        │"
  853.   echo "│            4......... 删 除 注 册 组.                  │"
  854.   echo "│                                                        │"  
  855.   echo "│            0..........退       出.                     │"
  856.   echo "│                                                        │"  
  857.   echo "├────────────────────────────┤"
  858.   echo "│                  请 选 择:【 】?                      │"
  859.   echo "└────────────────────────────┘"
  860.   echo "\c"  
  861. do        getc cmd
  862.         case $cmd in
  863.         1)      mkuser                      ;;
  864.         2)      rmuser                        ;;
  865.         3)      addgroup                ;;
  866.         4)      rmgroup                        ;;
  867.         9)        scoadmin acc                ;; #隐含选项: 字符界面帐户管理
  868.         0|q)        clear
  869.                 return 1 ;;
  870.         #*)        error                ;;
  871.         esac
  872. done
  873. }
  874. drive_menu()
  875. {
  876. echo "\n\n\n\n\n\n            
  877.                           请选择您所使用的软盘驱动器            
  878.                            ┏━━━━━━━━━━┓
  879.                            ┃                    ┃
  880.                            ┃ 1.软盘驱动器  1.2MB┃
  881.                            ┃                    ┃
  882.                            ┃ 2.软盘驱动器  1.2MB┃
  883.                            ┃                    ┃
  884.                            ┃ ${FBXS}3.软盘驱动器 1.44MB${QXSX}┃ ?
  885.                            ┃                    ┃
  886.                            ┃ 4.软盘驱动器 1.44MB┃
  887.                            ┃                    ┃
  888.                             ┃ 0. 退   出         ┃
  889.                            ┃                    ┃
  890.                            ┃  请  选  择 [   ]  ┃
  891.                            ┗━━━━━━━━━━┛"
  892.         echo "\c "
  893. getc DR
  894. }
  895. format_menu()
  896. {
  897.           while clear
  898. echo "\n\n\n\n\n\n            
  899.                           请选择您所使用的软盘驱动器            
  900.                            ┏━━━━━━━━━━┓
  901.                            ┃                    ┃
  902.                            ┃ 1.软盘驱动器  1.2MB┃
  903.                            ┃                    ┃
  904.                            ┃ 2.软盘驱动器  1.2MB┃
  905.                            ┃                    ┃
  906.                            ┃ ${FBXS}3.软盘驱动器 1.44MB${QXSX}┃ ?
  907.                            ┃                    ┃
  908.                            ┃ 4.软盘驱动器 1.44MB┃
  909.                            ┃                    ┃
  910.                             ┃ 0.退   出          ┃
  911.                            ┃                    ┃
  912.                            ┃  请  选  择 [   ]  ┃
  913.                            ┗━━━━━━━━━━┛"
  914.         echo "\c "
  915.                 do getc DR
  916.                    case $DR in
  917.                           #1) : ;; #break ;; #format /dev/rfd096ds15
  918.                   #prompt
  919.                             #read key ;;
  920.                         # 2) break ;; #format /dev/rfd196ds15
  921.                   #prompt
  922.                             #read key ;;
  923.                  3) format_unix ;;
  924.                           #4) break ;; #format /dev/rfd1135ds18
  925.                   #prompt
  926.                             #read key ;;
  927.                         0|q) return 0 ;;
  928.                         # 0) ;;
  929.                 esac
  930.                   #;;
  931.                 done
  932. }
  933. disk_menu ()
  934. {
  935. while clear
  936. do
  937. colorset1
  938.   echo "┌────────────────────────────┐"
  939.   echo "│                 ${FBXS}磁 盘 管 理 主 菜 单${QXSX}                   │"
  940.   echo "├────────────────────────────┤"
  941.   echo "│                                                        │"
  942.   echo "│                                                        │"
  943.   echo "│            1......... 格 式 化 软 盘(${FBXS}UNIX${QXSX})             │"
  944.   echo "│                                                        │"
  945. colorset3
  946.   echo "│            2......... 格 式 化 软 盘(${FBXS}DOS${QXSX})              │"
  947.   echo "│                                                        │"
  948.   echo "│            3......... 显 示 磁 盘 内 容(${FBXS}DOS${QXSX})           │"
  949.   echo "│                                                        │"
  950. colorset1
  951.   echo "│            4......... 显 示 磁 盘 内 容(${FBXS}UNIX${QXSX})          │"
  952.   echo "│                                                        │"  
  953.   echo "│            0..........退       出.                     │"
  954.   echo "│                                                        │"  
  955.   echo "├────────────────────────────┤"
  956.   echo "│                  请 选 择:【 】?                      │"
  957.   echo "└────────────────────────────┘"
  958.   echo "\c"  
  959. getc acc
  960. case $acc in
  961.         1) format_menu        ;;
  962.          2) format_dos ;;
  963.         3)  clear
  964. colorset3
  965. echo "\n\n插入 ${FBXS}DOS${QXSX} 磁盘按回车,开始显示."
  966.         echo "\c"
  967.          read key
  968. echo "\n" && dosdir a: 2>;/dev/null || echo "\007显示磁盘内容失败!!!"
  969.                   prompt
  970.                   read key
  971.             ;;

  972.         4)   while clear
  973.              do
  974.                 drive_menu
  975.                 case $DR in
  976.                  #1) Y=0 break ;;
  977.                  #2) Y=0 break ;;
  978.                  3) Y=0 break ;;
  979.                  #4) Y=0 break ;;
  980.                  0) Y=1 break ;;
  981.                 #        0|q)        clear
  982.                 #        return 1 ;;
  983.                  #*)
  984.         #echo "\n"
  985.         #echo "\007\n\t\t       ? 非  法  选  择!"
  986.                   #prompt
  987.                   #read key
  988.                         #;;
  989.                 esac
  990.              done
  991.                 if [ $Y = 0 ]
  992.                   then
  993.                    clear
  994. echo "\n\n\n插入 ${FBXS}UNIX${QXSX} 磁盘,按回车开始显示."
  995.         echo "\c"
  996.          read key
  997. echo "\n" && tar tv 2>;/dev/null || echo "\007显示磁盘内容失败!!!"
  998.                    prompt
  999.                    read key
  1000.                 fi
  1001.                 ;;
  1002.         0)        clear
  1003.                 return 1
  1004.                 ;;       
  1005. esac
  1006. done
  1007. }

  1008. sysoff() {
  1009.          echo "\n\n"
  1010.          echo "现在正在使用的终端有:"
  1011.          echo "\n"
  1012.          who
  1013.          echo "\n是否关闭 UNIX ? (y/n)  \c"
  1014. if getyn
  1015.             then
  1016.                 /etc/shutdown  -y -g0   
  1017. fi
  1018. }
  1019. check_user ()
  1020. {
  1021.          clear
  1022.        if who | grep $USER >;/dev/null
  1023.         then
  1024.         clear
  1025.         echo "\n\n\n"
  1026.         echo "\007\007请先退出 ${FBXS}chuxu${QXSX} 用户在关机!!!\c"
  1027.         sysoff
  1028.         #prom
  1029.         else
  1030.         sysoff
  1031.         fi
  1032. }
  1033. for code in 01 02 03 04 05 06 07 08 09 10 11 12
  1034. do
  1035. if [ /dev/tty${code} = $termial ]
  1036. then
  1037. while        clear
  1038.         colorset1
  1039.   echo "┌────────────────────────────┐"
  1040.   echo "│              ${FBXS}★  系 统 管 理 主 菜 单  ★${QXSX}              │"
  1041.   echo "├────────────────────────────┤"
  1042.   echo "│                                                        │"
  1043.   echo "│            1......... 设 置 系 统 时 间.               │"
  1044.   echo "│                                                        │"
  1045.   echo "│            2......... 打 印 机 管 理 系 统.            │"
  1046.   echo "│                                                        │"
  1047.   echo "│            3......... 终 端 管 理 系 统.               │"
  1048.   echo "│                                                        │"
  1049.   echo "│            4......... 软 盘 管 理 系 统.               │"
  1050.   echo "│                                                        │"
  1051.   echo "│            5......... 用 户 管 理 系 统.               │"
  1052.   echo "│                                                        │"  
  1053.   echo "│            6......... 关 闭 系 统.                     │"
  1054.   echo "│                                                        │"  
  1055.   echo "│            0......... 退       出.                     │"
  1056.   echo "│                                                        │"  
  1057.   echo "├────────────────────────────┤"
  1058.   echo "│                  请 选 择:【 】?                      │"
  1059.   echo "└────────────────────────────┘"
  1060.   echo "\c"  
  1061. do        getc cmd
  1062.         case $cmd in
  1063.         1)        systime                                ;;
  1064.         2)        print_menu                        ;;
  1065.         3)        termi_menu                        ;;
  1066.         4)      disk_menu                        ;;
  1067.         5)      check_pass                       ;;
  1068.         6)      check_user                      ;;
  1069.         7)      ku                                ;; #隐藏选项 杀死输入全部用户
  1070.         j)        /etc/jsq                        ;; #记算器
  1071.         0|q)        clear
  1072.                 setcolor -r black white
  1073.                 exit                                 ;;
  1074.         #*)        error                ;;
  1075.         esac
  1076. done
  1077. else
  1078. continue
  1079. fi
  1080. done
  1081. clear
  1082. echo "\007${FBXS}请在主控制台上运行!${QXSX}\n\n"
  1083. exit
  1084. #ps -ef -o pid=PID -o cmd=CMD|grep $name|awk '{print $1}'|kill -9

  1085. #ps -ef -o pid=PID cmd=CMD|grep $pname|awk '{print $1}'|xargs kill -9
复制代码

论坛徽章:
0
2 [报告]
发表于 2004-05-08 20:42 |只看该作者

N年以前学习SHELL时写的系统管理.

建议把shell打个包放上来,如粘贴有空字符

论坛徽章:
0
3 [报告]
发表于 2004-05-09 08:31 |只看该作者

N年以前学习SHELL时写的系统管理.

值得学习!!!

论坛徽章:
0
4 [报告]
发表于 2004-05-09 09:12 |只看该作者

N年以前学习SHELL时写的系统管理.

辛苦了,谢谢

论坛徽章:
0
5 [报告]
发表于 2004-05-09 10:20 |只看该作者

N年以前学习SHELL时写的系统管理.

谢谢啦
改成新系统的就更好了.
有写命令新版已不支持

论坛徽章:
0
6 [报告]
发表于 2004-05-09 11:17 |只看该作者

N年以前学习SHELL时写的系统管理.

up

论坛徽章:
0
7 [报告]
发表于 2004-05-09 11:46 |只看该作者

N年以前学习SHELL时写的系统管理.

很好

论坛徽章:
0
8 [报告]
发表于 2004-05-09 12:34 |只看该作者

N年以前学习SHELL时写的系统管理.

只能在SCO下用?

论坛徽章:
0
9 [报告]
发表于 2004-05-09 19:54 |只看该作者

N年以前学习SHELL时写的系统管理.

ding

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-05-09 19:58 |只看该作者

N年以前学习SHELL时写的系统管理.

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP