我正在尝试使用Whippail制作一个进度条,该进度条可以正确跟踪wget ping的进度。
我的目标是创建一个脚本,通过对google.com进行ping来测试你的互联网,当这种情况发生时,它会向你显示使用whiptail的进度,然后如果你上网了,它会给你发送一个消息框,否则它会显示一个"是"或"否"whiptail,询问你是否继续。
我目前的尝试:
#!/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
我找到了一种有效的方法
更新的解决方案
#!/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