[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: tasksel



Hi All


thanks for the help on this,  I am slowly getting somewhere with this. 

For now, and with the help, I am going to get the option menu working,
so this allows a single option to be selected from the menu and run, 
then goes back to the menu for the user to choose the next option if needed.

Once I am more comfortable with this, I can look at doing something with
the checkbox component of whiptail etc.

Thanks again

Regards

Paul



On 31/08/2019 19:52, Paul Sutton wrote:



> On 31/08/2019 08:11, Paul Sutton wrote:
>> On 30/08/2019 18:11, Greg Wooledge wrote:
>>> On Fri, Aug 30, 2019 at 05:31:50PM +0100, Paul Sutton wrote:
>>>> What tool is used to produce the graphical interface for programs such
>>>> as tasksel
>>> A program named dialog, or whiptail which is basically "dialog lite".
>>> Both of these are in packages with the same name as the program.
>>>
>>> ii  dialog         1.3-20190211-1 amd64        Displays user-friendly dialog box
>>> ii  whiptail       0.52.20-8      amd64        Displays user-friendly dialog box
>> Cool thanks for this,  I will have a look.
>>
>> Regards
>>
>> Paul
>
> Another question
>
> Using whiptail and trying to add a gui wrapper around a shell script I
> wrote to add a menu to the update process.
>
> #!/bin/bash
> echo "This script MUST be run with root priviledges"
> echo
> echo "Enter number of the option you would like"
> echo
> OPTIONS="Update List Upgrade Autoremove Clean Quit"
> echo
> select opt in $OPTIONS; do
>         if [ "$opt" = "Update" ] ; then
>             echo Update
>             apt update
>         elif [ "$opt" = "List" ] ; then
>             echo "List Upgradable package"
>             apt upgrade
>         elif [ "$opt" = "Upgrade" ] ; then
>             echo "Upgrade packages"
>             apt upgrade -y
>         elif [ "$opt" = "Autoremove" ] ; then
>             echo "Autoremove packages"
>             apt autoremove
>         elif [ "$opt" = "Clean" ] ; then
>             echo "Clean Up"
>             apt clean
>         elif [ "$opt" = "Quit" ] ; then
>             echo "Thank you and goodbye"
>             exit
>         else
>             echo "bad option"
>         fi
>     done
>
>
> The above works fine
>
>
> I am now trying to create a checkbox option menu so that the user can
> choose which options are needed then when pressing ok these are executed
> in order.
>
>
> whiptail --title "Check list example" --checklist \
> "Choose user's permissions" 20 78 4 \
> "NET_OUTBOUND" "Allow connections to other hosts" ON \
> "NET_INBOUND" "Allow connections from other hosts" OFF \
> "LOCAL_MOUNT" "Allow mounting of local devices" OFF \
> "REMOTE_MOUNT" "Allow mounting of remote devices" OFF
>
> I am just struggling to figure out how to :
>
> take the above, if the user chooses say 1,2 and 4 then the commands associated with those options are executed.
>
> so I could edit the above to say for the first option
>
> "UPDATE" "RUN apt update" OFF \
>
> Then if that option is selected it runs 
> apt update
>
> So another example I found to try and help me was
>
> #!/bin/bash
> DISTROS=$(whiptail --title "Test Checklist Dialog" --checklist \
> "Choose preferred Linux distros" 15 40 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
>
> But I am still confused as to how to actually take each selected option and use if / else statements to do something with this.  I think the issue is I don't really understand stderr properly or how to capture more than one option.
>
> Been trying different things for about an hour, so can keep trying just not getting very far. 
>
> So far I have come up with the following for what I trying to do.  So can add / remove options to the checklist menu ok. 
>
> whiptail --title "Check list example" --checklist \
> "Choose user's permissions" 20 40 4 \
> "Hello" "Print Hello" OFF \
> "Goodbye" "Print Goodbye" OFF \
> "CYA" "Print cya" OFF \
>
> CHOICEs=$?
>
> echo $CHOICEs
> echo $?
>
> which just outputs for example 
>
> "Hello" "Goodbye"0
> 0
>
>
> https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail is sort of useful for getting menus up but not doing anything with the output, it seems to assume people know how to do that confidently.
>
> Thanks
>
> Paul 
>
-- 
Paul Sutton
http://www.zleap.net
gnupg : 7D6D B682 F351 8D08 1893  1E16 F086 5537 D066 302D

https://fediverse.party/ - zleap@social.isurf.ca


Reply to: