码迷,mamicode.com
首页 > 其他好文 > 详细

dialog窗口编程的入门使用

时间:2015-04-12 06:54:28      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:dialog 窗体编程

dialog:能够动态生成一个文本窗口,并且这个窗口支持众多的窗口元素。

dialog: 命令

窗口元素:

     文本框

     单选框

     复选框

     进度条

dialog所能够提供给我们的窗体,选择完成以后(敲了回车之后),其相关信息没有输出到标准输出,而是输出到错误输出

# yum -y install dialog
# dialog --print-maxsize  #这个只是自己的值,换个人大小可能就不一样了,所以以后设置的时候尽可能不要把窗口设置的过大
MaxSize: 35, 134
# dialog --backtitle "First Window" --title "Create User" --yesno "HostName." 10 30

技术分享

在是选项按下回车后

# echo $?
0

如果在否选项按下回车后

# echo $?
1
# dialog --backtitle "First Window" --title "Create User" --inputbox "HostName." 10 30    #加上--inputbox选项后,就可以输入信息了

技术分享

还没有按回车

技术分享

# Hostname=`dialog --stdout --backtitle "First Window" --title "Create User" --inputbox "Hostname." 10 30`

技术分享

这次就不在后面显示了

# echo $Hostname 
hostname

注:先把所有的输出定向到标准输出(--stdout)上来,再使用一个变量获取命令的执行结果。既然这样,我们就能够在脚本中调用了


如何在脚本中使用dialog

例:创建用户

# vim adduser.sh
#!/bin/bash
#
Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30`
RETVAL=$?
if [ $RETVAL -eq 0 -a -n $Username ]; then      #判定$?,如果其值等于0,且用户名不为空 
        useradd $Username
        echo $Username | passwd --stdin $Username
fi
# bash -n adduser.sh
# bash adduser.sh

技术分享

# vim adduser.sh
if [ $RETVAL -eq 0 -a -n "$Username" ]; then    #把$Username用引号引起来

技术分享

为了不让其显示这些信息,而且如果用户存在,怎么办?用户存在了,你一上来就创建用户也不行

# vim adduser.sh

if [ $RETVAL -eq 0 -a -n "$Username" ] && ! id $Username &> /dev/null; then 

# bash adduser.sh

技术分享

没有任何信息返回,应该是成功了。但是这样也不知道是创建成功还是由于用户以存在而没有创建成功,则再改一下

# vim adduser.sh 
#!/bin/bash
#
Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30`
RETVAL=$?
if [ $RETVAL -eq 0 -a -n "$Username" ]; then   
        if ! id $Username &> /dev/null; then
                useradd $Username
                echo $Username | passwd --stdin $Username &> /dev/null
                dialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30
        else
               dialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30
        fi
fi
# bash adduser.sh

技术分享

技术分享



现在来实现输入账号、密码

# vim adduser.sh

#!/bin/bash

#

Username=`dialog --stdout --backtitle "Add a user." --title "Username" --inputbox "Please input a username: " 10 30`

RETVAL=$?

if [ $RETVAL -eq 0 -a -n "$Username" ]; then    #判定$?,如果其值等于0,且用户名不为空,且当前主机上不存在这个用户

        if ! id $Username &> /dev/null; then

                useradd $Username

                Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --passwordbox "Please enter the password: " 10 30`

                echo $Pass | passwd --stdin $Username &> /dev/null

                dialog --backtitle "Add a user." --title "Add a user." --msgbox "Add user $Username finished." 10 30

        else

                dialog --backtitle "Add a user." --title "Add a user." --msgbox "$Username is already created." 10 30

        fi

fi

# bash -n adduser.sh

# bash adduser.sh 

技术分享

技术分享

输入密码时,没有显示任何信息

技术分享

如果想让用户在输入密码时显示*号

# vim adduser.sh 
Pass=`dialog --stdout --backtitle "Password for $Username" --title "Passward" --insecure --passwordbox "Please enter the password: " 10 30`
#加入了--insecure选项
# bash adduser.sh

技术分享

技术分享

现在显示*号了

技术分享

如果用户没有给密码怎么办

# vim adduser.sh




# dialog --title "Cal" --calendar "Canlendar" 6 45 8 4 2015

技术分享

# dialog --title "Checklist" --checklist "Yourself" 10 30 2 h hight no w width yes

技术分享

# vim backup.sh
#!/bin/bash
#
Dir=(‘/etc/httpd‘ ‘/etc/pam.d‘ ‘/etc/vsftpd‘)
Source=`dialog --stdout --title "Backup" --checklist "Choose the dir you want to backup: " 10 50 3 0 /etc/httpd 0 1 /etc/pam.d 1 2 /etc/vsftpd 0`
echo $Source
Source=`echo $Source | tr -d ‘"‘`
for I in $Source; do
        echo ${Dir[$I]}
done
# bash backup.sh

技术分享

会显示

"0" "2"
/etc/httpd
/etc/vsftpd
# vim showusage.sh
#!/bin/bash
#
ShowItem=`dialog --stdout --title "Show Usages" --menu "Choose the Usage you want: " 12 35 6 1 "Show disk usages" 2 "Show physical memory usages" 3 "Show swap usages" 4 "quit"`

case $ShowItem in
"1")
        df -lh;;
"2")
        free -m | grep "^Me";;
"3")
        free -m | grep "^Sw";;
"4")
        exit;;
esac
# bash showusage.sh

技术分享

Filesystem                Size  Used Avail Use% Mounted on
/dev/sda2                  48G   23G   24G  50% /
tmpfs                     1.9G   21M  1.9G   2% /dev/shm
/dev/sda1                 190M   51M  129M  29% /boot
/dev/mapper/myvg-mydata   9.8G   54M  9.2G   1% /mydata
# bash showusage.sh

技术分享

Mem:          3776       2483       1292        144        661        575
# bash showusage.sh

技术分享

Swap:         9999        182       9817
# vim gauge.sh
#!/bin/bash
#
(for Percent in {1..100};do
        echo "XXX"
        echo "Percent: ${Percent}%"
        echo "XXX"
        echo $Percent
        sleep 0.2
done) | dialog --clear --gauge "Gauge" 8 60 0
# bash gauge.sh

技术分享

技术分享

# dialog --title "Add a user" --form "please input the infomation of new user:" 12 40 4 > "Username: " 1 1 "" 1 15 15 0 > "Full name: " 2 1 "" 2 15 15 0 > "Home Dir: " 3 1 "" 3 15 15 0 > "Shell: " 4 1 "" 4 15 15 0

技术分享


本文出自 “三哥” 博客,请务必保留此出处http://523958392.blog.51cto.com/9871195/1631380

dialog窗口编程的入门使用

标签:dialog 窗体编程

原文地址:http://523958392.blog.51cto.com/9871195/1631380

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!