Function to run a progress bar in zenity


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Function to run a progress bar in zenity
# 1  
Old 10-17-2018
Function to run a progress bar in zenity

First off, I'm a novice in bash...
I'm trying to make a progress bar in zenity to show progress of a file download. When complete, the progress bar should exit. I'm using a function for the progress bar. Any help appropriated.
My code is :
Code:
#!/bin/bash

progress_bar()
{

(
while :
do

# =================================================================
echo "# Uploading" ; sleep 2
echo "25"
echo "# Uploading" ; sleep 2
echo "50"
echo "# Uploading" ; sleep 2
echo "75"
echo "# Uploading" ; sleep 2
echo "99"
echo "# Uploading" ; sleep 2
done

)  |
`zenity --progress  --title="Progress Status"  --auto-close  --auto-kill 2>&1`
a=111
echo $a
(( $? != 0 )) && zenity --error --text="Error in zenity command."

exit 0
}

while :
do
  progress_bar &  `curl  -o "bigfile222"    <downloadurl> 2>/dev/null`

wait $(jobs -p)
done
exit
~

# 2  
Old 10-17-2018
curl has a built-in progress meter that's probably better and more honest than anything hacked from the outside. I strongly suggest you use it.

A good start would be removing the useless backticks ` ` you've put around curl. This will allow you to see what curl's printing. Perhaps it can be piped into zenity somehow.

curl also has an alternate, simpler-looking progress meter if you don't like the default, which you can tell it to use with curl -'#'

Last edited by Corona688; 10-18-2018 at 12:22 PM..
# 3  
Old 10-18-2018
A little more experimenting today, I don't have zenity but do have curl, this extracts the percentage from the live download:

Code:
curl -o filename http://website/file 2>&1 |
        awk -v RS="\r" 'BEGIN { print "# Downloading file" } ; $1 ~ /[0-9]/ { print $1 }' | zenity --progress

I haven't tested the red bit, let me know how that goes.
# 4  
Old 10-22-2018
You could also use wget with the --progress=bar option which writes to STDERR or another alternate would be pv. You probably have to do something a little odd with that though, such as:-
Code:
wget -O - "${source_url}" | pv options > ${target_file}

The options could include things such as a file size estimate so you can get a percentage done/remaining time estimate etc.

I'd only go for pv in this case if the curl or wget options are unavailable to you for some reason, e.g. you are capturing the output in a variable to use later on for some reason, however if that is the case, maybe you would be better to set off a background process to give you feedback, similar to this:-
Code:
:

target_file=/path/to/your/file
expected_size=1024000000           # Estimate on the file size
:
:
while :
do
   sleep 2
   current_size=$(stat -c %s ${target_file})
   ((percent_complete=(${current_size}*100)/${expected_size}))
   printf "\rDownload is %2.0d\% complete."
done &                 #   Loop in the background
bg_process_id=$!       # Get the process id of the background loop

curl -o "${target_file}" "${source_url}"
kill $bg_process_id

It's a bit messy, but could help if you read and process the STDOUT & STDERR from curl or wget.



I hope that this helps, but try the other suggestions first.
Robin
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[zenity] precise progress bar

Hello everyone, Is it possible to have a precise progress bar in zenity during the execution of the following: find -type f \( -not -name "$file_name".md5 \) -exec md5sum '{}' \; > "$file_name".md5Currently I am using zenity --title="Running..." --progress --pulsate --auto-close... (1 Reply)
Discussion started by: soichiro
1 Replies

2. Shell Programming and Scripting

Looping with zenity's progress bar

Hi, me again :} I do have a little issue with my pseudo code. I am trying to copy files from one place to another and show the progress bar of the task, however the progress will start on 0% and change its GUI to 100% immediately (there is no progress on the bar), files were copied to desired... (1 Reply)
Discussion started by: defila
1 Replies

3. Shell Programming and Scripting

Progress bar

Hi Experts; Im in the process of writing a shell script for enabling an IT operations to run archiving.We use netbackup. The script is complete, though there is one bit that i need help on. Im trying to have a progess bar for the procedure.I have gone through the man page of the command in... (5 Replies)
Discussion started by: maverick_here
5 Replies

4. Shell Programming and Scripting

zenity progress and simultaneously terminal output

Hi, I want to use zenity --progress and also put the output to the terminal. I tried using the tee command but that puts the output to the terminal first and then shows the zenity progress dialog. Take the normal example by the gnome manual: ( echo "10" ; sleep 1 ... (0 Replies)
Discussion started by: sikku
0 Replies

5. Shell Programming and Scripting

Progress bar for cp

I'm trying to use this code to get a progress bar for cp: "Can you get cp to give a progress bar like wget?" But I'm getting these errors: stat: illegal option -- c usage: stat awk: division by zero input record number 1, file source line number 4 I'm using Mac OS X 10.6... (1 Reply)
Discussion started by: pcwiz
1 Replies

6. Shell Programming and Scripting

progress bar

hi all, in shell script (ksh), how do i write a progress bar ?? i have a script which searches files and while its searching i am currently printing out "." and if it finds what its searching for the script prints out the name of the file e.g .................. firstFile.txt... (2 Replies)
Discussion started by: cesarNZ
2 Replies

7. Shell Programming and Scripting

Progress bar

Hi friends, how can I show a progress bar for any running process in the shell script. For example when I am copying or compressing a file. Thanks. (1 Reply)
Discussion started by: dwiravi
1 Replies

8. UNIX for Advanced & Expert Users

how to have a cp progress bar?

Hi all, This is a reformed post to my earlier ones!!!!!! I would like to know how to include a progress bar while using the cp... I am copying a few huge files from cdrom but am unable to figure out ,how to give a progress bar!!!!! I checked out other sites as well,but the issue here is... (1 Reply)
Discussion started by: wrapster
1 Replies

9. Shell Programming and Scripting

progress bar

i am trying to write a script where in it will connect to remote servers and execute remote scripts to fetch some data and ftp it back to a main server. i would like to add a script where it will show some sort of status bar until such time that the expected files have been recieved. something... (3 Replies)
Discussion started by: inquirer
3 Replies
Login or Register to Ask a Question