简体   繁体   中英

Bash Whiptail ping progress bar

I am trying to make a progress bar using Whiptail that can track the progress of the wget ping correctly.

My goal is to create a script that test your internet by making a ping to google.com and while this is happening that is shows you the progress using whiptail and then after that if you got internet it send you a msgbox else it will show you a yes or no whiptail that will ask you if you what to continue.

My current try:

    #!/bin/bash

    #Make ping and display proces

        #Progres bar GUI using whiptail(Native Gui)
        while true do
            # Check internet status, ping google.com
            wget -q --tries=20  --timeout=10 --spider http://google.com

        done| whiptail --title "Internet Validation" --gauge "${ping}" 6 60 0


    #If for validating Internet conexion
    if [ $? -eq 0 ]; then
        #If succes int variable change to Online 
        int="Online"
        #And Whiptail GUI disaply confimacion box
        whiptail --title "Succes" --msgbox "Internet Status: $int. Choose Ok to continue." 10 60

    #Internet validation opcion for when there is not internet
    else
        #Int Variable change to Offlien
        int="Offline"
        #Whiptail display Internet Status: Offline and ask if it whants to continue
        if (whiptail --title "Conexion Error" --yesno "Internet Status: $int, Continue?" 10 60) then
            #Function to install Nos Software
            $(function)
        else
            #Whiptail display installetion cancel
            whiptail --title "Installation" --msgbox "The Installation has been cancel." 10 60
        fi
    fi

    #Save in logfile Status of internet
    echo "`date -u` 'Internet Status: $int'" >> logfile.txt

I found a way that works
Updated solution

#!/bin/bash

#Progres bar GUI using whiptail(Native Gui)
{
    #Start progress bar in 0
    i="0"
    # Maximum number to try.
    ((count = 100))

    #Make ping and display proces
    while [[ $count -ne 0 ]] ; do

        # Check internet status, ping google.com; ping once
        ping -c 1 google.com
        rc=$?

        # If okay, flag to exit loop.
        if [[ $rc -eq 0 ]] ; then
            ((count = 1))
        fi
        # So we don't go forever.
        ((count = count - 1))

        #For progress bar
        sleep 1
        echo $i
        i=$(expr $i + 1)
    done
    # If it is done then display 100%
    echo 100
    # Give it some time to display the progress to the user.
    sleep 2
#Display Ping progress bar
} | whiptail --title "Internet Validation" --gauge "validating Conexion" 6 60 0

#If for validating Internet conexion
if [ $? -eq 0 ]; then
    #If succes int variable change to Online 
    int="Online"
    #And Whiptail GUI disaply confimacion box
    whiptail --title "Succes" --msgbox "Internet Status: $int. Choose Ok to continue." 10 60

#Internet validation opcion for when there is not internet
else
    #Int Variable change to Offlien
    int="Offline"
    #Whiptail display Internet Status: Offline and ask if it whants to continue
    if (whiptail --title "Conexion Error" --yesno "Internet Status: $int, Continue?" 10 60) then
        #Function to install Nos Software
        $(function)
    else
        #Whiptail display installetion cancel
        whiptail --title "Installation" --msgbox "The Installation has been cancel." 10 60
    fi
fi

#Save in logfile Status of internet
echo "`date -u` 'Internet Status: $int'" >> logfile.txt

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM