From 4eb1a6e1220dee809c089a0a7db1f22a1277c8e0 Mon Sep 17 00:00:00 2001 From: Joonas Viskari Date: Thu, 14 Jun 2018 13:25:29 +0300 Subject: [PATCH] Initial --- checklist.sh | 14 +++++++++ demo.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ inputbox.sh | 9 ++++++ menubox.sh | 13 ++++++++ msgbox.sh | 2 ++ passwd.sh | 9 ++++++ progress.sh | 7 +++++ radiolist.sh | 14 +++++++++ text.txt | 32 ++++++++++++++++++++ textbox.sh | 2 ++ yesno.sh | 6 ++++ yesno2.sh | 6 ++++ 12 files changed, 199 insertions(+) create mode 100755 checklist.sh create mode 100755 demo.sh create mode 100755 inputbox.sh create mode 100755 menubox.sh create mode 100755 msgbox.sh create mode 100755 passwd.sh create mode 100755 progress.sh create mode 100755 radiolist.sh create mode 100644 text.txt create mode 100755 textbox.sh create mode 100755 yesno.sh create mode 100755 yesno2.sh diff --git a/checklist.sh b/checklist.sh new file mode 100755 index 0000000..0acc110 --- /dev/null +++ b/checklist.sh @@ -0,0 +1,14 @@ +#!/bin/bash +DISTROS=$(whiptail --title "Test Checklist Dialog" --checklist \ +"Choose preferred Linux distros" 15 60 4 \ +"debian" "Venerable Debian" ON \ +"ubuntu" "Popular Ubuntu" OFF \ +"centos" "Stable CentOS" ON \ +"mint" "Rising Star Mint" OFF 3>&1 1>&2 2>&3) + +exitstatus=$? +if [ $exitstatus = 0 ]; then + echo "Your favorite distros are:" $DISTROS +else + echo "You chose Cancel." +fi diff --git a/demo.sh b/demo.sh new file mode 100755 index 0000000..16fca9c --- /dev/null +++ b/demo.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# Whiptail is the interactive shell Scrpting +OPTION=$(whiptail --title "Whiptail Shell Script Menu" --menu "Choose your option" 15 60 4 \ +"1" "Change Password" \ +"2" "Change UserName" \ +"3" "Change Email" \ +"4" "exit" 3>&1 1>&2 2>&3) + +exitstatus=$? +if [ $exitstatus = 0 ]; then + echo "Your chosen option:" $OPTION + +case $OPTION in + 1) echo "Option1 Selected" + if (whiptail --title "Change Password" --yes-button "Yes" --no-button "No" --yesno "Do you need to changed Password ?" 10 60) then + echo "password Selection Yes$?." + + # Start Password Box + PASSWORD=$(whiptail --passwordbox "please enter your secret password" 8 78 --title "Change Password" 3>&1 1>&2 2>&3) + # A trick to swap stdout and stderr. + # Again, you can pack this inside if, but it seems really long for some 80-col terminal users. + exitstatus=$? + if [ $exitstatus = 0 ]; then + echo "User selected Ok and entered " $PASSWORD + touch sample_out_put.txt + echo $PASSWORD > sample_out_put.txt + + # Start Progress Bar + { + for ((i = 0 ; i <= 100 ; i+=5)); do + sleep 0.3 + echo $i + done + } | whiptail --gauge "Password Updating.." 6 50 0 + # End Progress Bar + + else + echo "User selected Cancel." + fi + + # End Password Box + else + echo "Password Selection No$?." + fi + ;; + 2) echo "option2 Selected" + # Change User Name Box + NAME=$(whiptail --inputbox "Change Username " 8 78 --title "Changed UserName" 3>&1 1>&2 2>&3) + exitstatus=$? + if [ $exitstatus = 0 ]; then + echo "UserName Changed " $NAME + if (whiptail --title "Confirm Change UserName" --yes-button "Yes" --no-button "No" --yesno "Do you need to changed UserName ?" 10 60) then + echo "Username Confirm Yes$?." + # Start Progress Bar + { + for ((i = 0 ; i <= 100 ; i+=5)); do + sleep 0.3 + echo $i + done + } | whiptail --gauge "UserName Updating.." 6 50 0 + # End Progress Bar + else + echo"Confirm Failed" + fi + + else + echo "UserName Not Changed" + fi + + ;; + 3) echo "Option3 Selected" + + ;; + 4) echo "exit" + { + for ((i = 0 ; i <= 100 ; i+=5)); do + sleep 0.1 + echo $i + done + } | whiptail --gauge "exit..." 6 50 0 +esac + +else + echo "You chose Cancel." +fi diff --git a/inputbox.sh b/inputbox.sh new file mode 100755 index 0000000..db0d1d5 --- /dev/null +++ b/inputbox.sh @@ -0,0 +1,9 @@ +#!/bin/bash +PET=$(whiptail --title "Test Free-form Input Box" --inputbox "What is your pet's name?" 10 60 Wigglebutt 3>&1 1>&2 2>&3) + +exitstatus=$? +if [ $exitstatus = 0 ]; then + echo "Your pet name is:" $PET +else + echo "You chose Cancel." +fi diff --git a/menubox.sh b/menubox.sh new file mode 100755 index 0000000..44473d1 --- /dev/null +++ b/menubox.sh @@ -0,0 +1,13 @@ +#!/bin/bash +OPTION=$(whiptail --title "Test Menu Dialog" --menu "Choose your option" 15 60 4 \ +"1" "Grilled Spicy Sausage" \ +"2" "Grilled Halloumi Cheese" \ +"3" "Charcoaled Chicken Wings" \ +"4" "Fried Aubergine" 3>&1 1>&2 2>&3) + +exitstatus=$? +if [ $exitstatus = 0 ]; then + echo "Your chosen option:" $OPTION +else + echo "You chose Cancel." +fi diff --git a/msgbox.sh b/msgbox.sh new file mode 100755 index 0000000..7795c0c --- /dev/null +++ b/msgbox.sh @@ -0,0 +1,2 @@ +#!/bin/bash +whiptail --title "Test Message Box" --msgbox "Create a message box with whiptail. Choose Ok to continue." 10 60 diff --git a/passwd.sh b/passwd.sh new file mode 100755 index 0000000..ec00ab7 --- /dev/null +++ b/passwd.sh @@ -0,0 +1,9 @@ +#!/bin/bash +PASSWORD=$(whiptail --title "Test Password Box" --passwordbox "Enter your password and choose Ok to continue." 10 60 3>&1 1>&2 2>&3) + +exitstatus=$? +if [ $exitstatus = 0 ]; then + echo "Your password is:" $PASSWORD +else + echo "You chose Cancel." +fi diff --git a/progress.sh b/progress.sh new file mode 100755 index 0000000..f9c46a8 --- /dev/null +++ b/progress.sh @@ -0,0 +1,7 @@ +#!/bin/bash +{ + for ((i = 0 ; i <= 100 ; i+=20)); do + sleep 1 + echo $i + done +} | whiptail --gauge "Please wait while installing" 6 60 0 diff --git a/radiolist.sh b/radiolist.sh new file mode 100755 index 0000000..9f0b3c6 --- /dev/null +++ b/radiolist.sh @@ -0,0 +1,14 @@ +#!/bin/bash +DISTROS=$(whiptail --title "Test Checklist Dialog" --radiolist \ +"What is the Linux distro of your choice?" 15 60 4 \ +"debian" "Venerable Debian" ON \ +"ubuntu" "Popular Ubuntu" OFF \ +"centos" "Stable CentOS" OFF \ +"mint" "Rising Star Mint" OFF 3>&1 1>&2 2>&3) + +exitstatus=$? +if [ $exitstatus = 0 ]; then + echo "The chosen distro is:" $DISTROS +else + echo "You chose Cancel." +fi diff --git a/text.txt b/text.txt new file mode 100644 index 0000000..c3646bd --- /dev/null +++ b/text.txt @@ -0,0 +1,32 @@ +Box options: + --msgbox + --yesno + --infobox + --inputbox [init] + --passwordbox [init] + --textbox + --menu [tag item] ... + --checklist [tag item status]... + --radiolist [tag item status]... + --gauge +Options: (depend on box-option) + --clear clear screen on exit + --defaultno default no button + --default-item set default string + --fb, --fullbuttons use full buttons + --nocancel no cancel button + --yes-button set text of yes button + --no-button set text of no button + --ok-button set text of ok button + --cancel-button set text of cancel button + --noitem don't display items + --notags don't display tags + --separate-output output one line at a time + --output-fd output to fd, not stdout + --title display title + --backtitle <backtitle> display backtitle + --scrolltext force vertical scrollbars + --topleft put window in top-left corner + -h, --help print this message + -v, --version print version information + diff --git a/textbox.sh b/textbox.sh new file mode 100755 index 0000000..1110941 --- /dev/null +++ b/textbox.sh @@ -0,0 +1,2 @@ +#!/bin/bash +whiptail --backtitle "backtitle" --title "Test Message Box" --textbox --scrolltext text.txt 20 80 diff --git a/yesno.sh b/yesno.sh new file mode 100755 index 0000000..db8b277 --- /dev/null +++ b/yesno.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if (whiptail --title "Test Yes/No Box" --yesno "Choose between Yes and No." 10 60) then + echo "You chose Yes. Exit status was $?." +else + echo "You chose No. Exit status was $?." +fi diff --git a/yesno2.sh b/yesno2.sh new file mode 100755 index 0000000..90fbfff --- /dev/null +++ b/yesno2.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if (whiptail --title "Test Yes/No Box" --yes-button "Skittles" --no-button "M&M's" --yesno "Which do you like better?" 10 60) then + echo "You chose Skittles Exit status was $?." +else + echo "You chose M&M's. Exit status was $?." +fi -- 2.25.1