dialog視窗編程的入門使用

來源:互聯網
上載者:User

標籤: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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/D8/wKiom1UlEOihR9rNAAEaNwRwGEw427.jpg" title="01.png" alt="wKiom1UlEOihR9rNAAEaNwRwGEw427.jpg" />

在是選項按下斷行符號後

# echo $?0

如果在否選項按下斷行符號後

# echo $?1# dialog --backtitle "First Window" --title "Create User" --inputbox "HostName." 10 30    #加上--inputbox選項後,就可以輸入資訊了

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/D4/wKioL1UlEv3i5pTrAAEic7zQ5Mg529.jpg" style="float:none;" title="02.png" alt="wKioL1UlEv3i5pTrAAEic7zQ5Mg529.jpg" />

還沒有按斷行符號

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/D8/wKiom1UlEbXDSd7kAAFBBNkvzYQ946.jpg" style="float:none;" title="03.png" alt="wKiom1UlEbXDSd7kAAFBBNkvzYQ946.jpg" />

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D4/wKioL1UlGWeDwre6AAEpe3iw68A329.jpg" title="05.png" alt="wKioL1UlGWeDwre6AAEpe3iw68A329.jpg" />

這次就不在後面顯示了

# 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 $Usernamefi# bash -n adduser.sh# bash adduser.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D4/wKioL1UlHWHQuWeqAAC3jFWr9UM034.jpg" title="06.png" alt="wKioL1UlHWHQuWeqAAC3jFWr9UM034.jpg" />

# vim adduser.shif [ $RETVAL -eq 0 -a -n "$Username" ]; then    #把$Username用引號引起來

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D4/wKioL1UlIG_xx_raAAErJy9IBYM440.jpg" title="07.png" alt="wKioL1UlIG_xx_raAAErJy9IBYM440.jpg" />

為了不讓其顯示這些資訊,而且如果使用者存在,怎麼辦?使用者存在了,你一上來就建立使用者也不行

# vim adduser.sh

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

# bash adduser.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D9/wKiom1UlItmiwVlOAAFD_aOlLt4481.jpg" title="08.png" alt="wKiom1UlItmiwVlOAAFD_aOlLt4481.jpg" />

沒有任何資訊返回,應該是成功了。但是這樣也不知道是建立成功還是由於使用者以存在而沒有建立成功,則再改一下

# 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        fifi# bash adduser.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D9/wKiom1UlJILg_mfEAACmq-IbTx0501.jpg" style="float:none;" title="09.png" alt="wKiom1UlJILg_mfEAACmq-IbTx0501.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/D4/wKioL1UlJcvh6Ci3AACJNTDtpl8743.jpg" style="float:none;" title="10.png" alt="wKioL1UlJcvh6Ci3AACJNTDtpl8743.jpg" />



現在來實現輸入帳號、密碼

# 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 

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D4/wKioL1UlKnHjpJeuAACZOeuZXxs058.jpg" style="float:none;" title="11.png" alt="wKioL1UlKnHjpJeuAACZOeuZXxs058.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D9/wKiom1UlKSmgPesxAACRrvHh0ss909.jpg" style="float:none;" title="12.png" alt="wKiom1UlKSmgPesxAACRrvHh0ss909.jpg" />

輸入密碼時,沒有顯示任何資訊

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/D4/wKioL1UlKnGRSD8EAACB8lkV4DE979.jpg" style="float:none;" title="13.png" alt="wKioL1UlKnGRSD8EAACB8lkV4DE979.jpg" />

如果想讓使用者在輸入密碼時顯示*號

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D4/wKioL1UlLATClm6ZAACUnAcXG1c504.jpg" style="float:none;" title="14.png" alt="wKioL1UlLATClm6ZAACUnAcXG1c504.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/D4/wKioL1UlLAST8KbQAACZwIUwH5w871.jpg" style="float:none;" title="15.png" alt="wKioL1UlLAST8KbQAACZwIUwH5w871.jpg" />

現在顯示*號了

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/D9/wKiom1UlKrzyjjNoAACAX9VkHKg737.jpg" style="float:none;" title="16.png" alt="wKiom1UlKrzyjjNoAACAX9VkHKg737.jpg" />

如果使用者沒有給密碼怎麼辦

# vim adduser.sh




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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/D6/wKioL1UlSy2zUpmvAAE9Tfa6m44771.jpg" title="01.png" alt="wKioL1UlSy2zUpmvAAE9Tfa6m44771.jpg" />

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/DB/wKiom1UlSpniaM5MAACoSy0x7QI250.jpg" title="01.png" alt="wKiom1UlSpniaM5MAACoSy0x7QI250.jpg" />

# 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 $SourceSource=`echo $Source | tr -d ‘"‘`for I in $Source; do        echo ${Dir[$I]}done# bash backup.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/DB/wKiom1UlS2HzkoprAAD-VVnuJSQ922.jpg" title="01.png" alt="wKiom1UlS2HzkoprAAD-VVnuJSQ922.jpg" />

會顯示

"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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/5D/DB/wKiom1UlTpfDHjaNAAD9YJT9PpQ191.jpg" style="float:none;" title="01.png" alt="wKiom1UlTpfDHjaNAAD9YJT9PpQ191.jpg" />

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/D6/wKioL1UlT-DzimltAAECnPJR_rc456.jpg" style="float:none;" title="02.png" alt="wKioL1UlT-DzimltAAECnPJR_rc456.jpg" />

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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/DB/wKiom1UlTpfCW1rHAADy6dtRbig589.jpg" style="float:none;" title="03.png" alt="wKiom1UlTpfCW1rHAADy6dtRbig589.jpg" />

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.2done) | dialog --clear --gauge "Gauge" 8 60 0# bash gauge.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5D/DB/wKiom1UlUCvw-xKXAACVVmzj1l0393.jpg" style="float:none;" title="01.png" alt="wKiom1UlUCvw-xKXAACVVmzj1l0393.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D6/wKioL1UlUXSxa1GXAACW2J8m4sM553.jpg" style="float:none;" title="02.png" alt="wKioL1UlUXSxa1GXAACW2J8m4sM553.jpg" />

# 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

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5D/D6/wKioL1UlUqXAyf4vAAEw3CkvTA4968.jpg" title="01.png" alt="wKioL1UlUqXAyf4vAAEw3CkvTA4968.jpg" />


本文出自 “三哥” 部落格,請務必保留此出處http://523958392.blog.51cto.com/9871195/1631380

dialog視窗編程的入門使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.