Может ли кто-нибудь сделать простой скрипт zenity для zsync, который просто берет местоположение файла для синхронизации и файл zsync и показывает прогресс?
zsync имеет ужасный выход для синтаксического анализа.
Я сказал, что я сумасшедший.
#!/bin/bash
url=$1
seedfile=$2
tempdir=$(mktemp -d)
msgfile=$tempdir/message
trap 'rm -rf "$tempdir"' EXIT
down_filter() {
local message line percent speed
echo "Downloading zsync file" > "$msgfile"
read -r -n1 _
while read -r line; do
if [[ $line = [-#]* ]]; then
read -r _ percent speed <<< "$line"
echo "#$(<"$msgfile")\n$speed"
if (( ${percent%%.*} < 100 )); then
echo "$percent"
else
echo "99.9%"
fi
fi
done < <(awk 'BEGIN{RS="[\r\n]"} {print;fflush()}')
}
seed_filter() {
local message file count size point
while read -r -d '*' line; do
file=${line%:*}
message+="\n$file"
echo "$message" > "$msgfile"
file=${file#reading seed file }
count=1
size=$(( $(wc -c < "$file") / 1000000 + 1 ))
echo "#$message"
while read -r -n1 point; do
[[ $point = '*' ]] || break
((count++))
echo "$(( 100 * count / size ))%"
done
read -r message;
echo "$message" > "$msgfile"
done
}
if [[ -z $url ]]; then
url=$(zenity --entry \
--title=zsync \
--text="Enter URL to zsync file" \
--width=500 \
--height=100 \
) || exit
fi
if [[ -z $seedfile || ! -e $seedfile ]]; then
seedfile=$(zenity --file-selection \
--title="zsync $url" \
--text="Choose a seed-file" \
)
fi
{
zsync ${seedfile:+-i "$seedfile"} "$url" \
> >(down_filter >&3) 2> >(seed_filter >&3)
} 3> >(zenity --progress \
--title="zsync $url" \
--width=500 \
--height=100 \
)
У сценария будет много недостатков. Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \ , * или строки новой строки.
Ожидать ошибок; Я действительно не проверял это.
В любом случае, я никогда не слышал о zsync раньше. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты:
zsync имеет ужасный выход для синтаксического анализа.
Я сказал, что я сумасшедший.
#!/bin/bash
url=$1
seedfile=$2
tempdir=$(mktemp -d)
msgfile=$tempdir/message
trap 'rm -rf "$tempdir"' EXIT
down_filter() {
local message line percent speed
echo "Downloading zsync file" > "$msgfile"
read -r -n1 _
while read -r line; do
if [[ $line = [-#]* ]]; then
read -r _ percent speed <<< "$line"
echo "#$(<"$msgfile")\n$speed"
if (( ${percent%%.*} < 100 )); then
echo "$percent"
else
echo "99.9%"
fi
fi
done < <(awk 'BEGIN{RS="[\r\n]"} {print;fflush()}')
}
seed_filter() {
local message file count size point
while read -r -d '*' line; do
file=${line%:*}
message+="\n$file"
echo "$message" > "$msgfile"
file=${file#reading seed file }
count=1
size=$(( $(wc -c < "$file") / 1000000 + 1 ))
echo "#$message"
while read -r -n1 point; do
[[ $point = '*' ]] || break
((count++))
echo "$(( 100 * count / size ))%"
done
read -r message;
echo "$message" > "$msgfile"
done
}
if [[ -z $url ]]; then
url=$(zenity --entry \
--title=zsync \
--text="Enter URL to zsync file" \
--width=500 \
--height=100 \
) || exit
fi
if [[ -z $seedfile || ! -e $seedfile ]]; then
seedfile=$(zenity --file-selection \
--title="zsync $url" \
--text="Choose a seed-file" \
)
fi
{
zsync ${seedfile:+-i "$seedfile"} "$url" \
> >(down_filter >&3) 2> >(seed_filter >&3)
} 3> >(zenity --progress \
--title="zsync $url" \
--width=500 \
--height=100 \
)
У сценария будет много недостатков. Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \ , * или строки новой строки.
Ожидать ошибок; Я действительно не проверял это.
В любом случае, я никогда не слышал о zsync раньше. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты:
zsync имеет ужасный выход для синтаксического анализа.
Я сказал, что я сумасшедший.
#!/bin/bash
url=$1
seedfile=$2
tempdir=$(mktemp -d)
msgfile=$tempdir/message
trap 'rm -rf "$tempdir"' EXIT
down_filter() {
local message line percent speed
echo "Downloading zsync file" > "$msgfile"
read -r -n1 _
while read -r line; do
if [[ $line = [-#]* ]]; then
read -r _ percent speed <<< "$line"
echo "#$(<"$msgfile")\n$speed"
if (( ${percent%%.*} < 100 )); then
echo "$percent"
else
echo "99.9%"
fi
fi
done < <(awk 'BEGIN{RS="[\r\n]"} {print;fflush()}')
}
seed_filter() {
local message file count size point
while read -r -d '*' line; do
file=${line%:*}
message+="\n$file"
echo "$message" > "$msgfile"
file=${file#reading seed file }
count=1
size=$(( $(wc -c < "$file") / 1000000 + 1 ))
echo "#$message"
while read -r -n1 point; do
[[ $point = '*' ]] || break
((count++))
echo "$(( 100 * count / size ))%"
done
read -r message;
echo "$message" > "$msgfile"
done
}
if [[ -z $url ]]; then
url=$(zenity --entry \
--title=zsync \
--text="Enter URL to zsync file" \
--width=500 \
--height=100 \
) || exit
fi
if [[ -z $seedfile || ! -e $seedfile ]]; then
seedfile=$(zenity --file-selection \
--title="zsync $url" \
--text="Choose a seed-file" \
)
fi
{
zsync ${seedfile:+-i "$seedfile"} "$url" \
> >(down_filter >&3) 2> >(seed_filter >&3)
} 3> >(zenity --progress \
--title="zsync $url" \
--width=500 \
--height=100 \
)
У сценария будет много недостатков. Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \ , * или строки новой строки.
Ожидать ошибок; Я действительно не проверял это.
В любом случае, я никогда не слышал о zsync раньше. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты:
zsync имеет ужасный выход для синтаксического анализа.
Я сказал, что я сумасшедший.
#!/bin/bash
url=$1
seedfile=$2
tempdir=$(mktemp -d)
msgfile=$tempdir/message
trap 'rm -rf "$tempdir"' EXIT
down_filter() {
local message line percent speed
echo "Downloading zsync file" > "$msgfile"
read -r -n1 _
while read -r line; do
if [[ $line = [-#]* ]]; then
read -r _ percent speed <<< "$line"
echo "#$(<"$msgfile")\n$speed"
if (( ${percent%%.*} < 100 )); then
echo "$percent"
else
echo "99.9%"
fi
fi
done < <(awk 'BEGIN{RS="[\r\n]"} {print;fflush()}')
}
seed_filter() {
local message file count size point
while read -r -d '*' line; do
file=${line%:*}
message+="\n$file"
echo "$message" > "$msgfile"
file=${file#reading seed file }
count=1
size=$(( $(wc -c < "$file") / 1000000 + 1 ))
echo "#$message"
while read -r -n1 point; do
[[ $point = '*' ]] || break
((count++))
echo "$(( 100 * count / size ))%"
done
read -r message;
echo "$message" > "$msgfile"
done
}
if [[ -z $url ]]; then
url=$(zenity --entry \
--title=zsync \
--text="Enter URL to zsync file" \
--width=500 \
--height=100 \
) || exit
fi
if [[ -z $seedfile || ! -e $seedfile ]]; then
seedfile=$(zenity --file-selection \
--title="zsync $url" \
--text="Choose a seed-file" \
)
fi
{
zsync ${seedfile:+-i "$seedfile"} "$url" \
> >(down_filter >&3) 2> >(seed_filter >&3)
} 3> >(zenity --progress \
--title="zsync $url" \
--width=500 \
--height=100 \
)
У сценария будет много недостатков. Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \ , * или строки новой строки.
Ожидать ошибок; Я действительно не проверял это.
В любом случае, я никогда не слышал о zsync раньше. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты:
zsync имеет ужасный выход для синтаксического анализа.
Я сказал, что я сумасшедший.
#!/bin/bash
url=$1
seedfile=$2
tempdir=$(mktemp -d)
msgfile=$tempdir/message
trap 'rm -rf "$tempdir"' EXIT
down_filter() {
local message line percent speed
echo "Downloading zsync file" > "$msgfile"
read -r -n1 _
while read -r line; do
if [[ $line = [-#]* ]]; then
read -r _ percent speed <<< "$line"
echo "#$(<"$msgfile")\n$speed"
if (( ${percent%%.*} < 100 )); then
echo "$percent"
else
echo "99.9%"
fi
fi
done < <(awk 'BEGIN{RS="[\r\n]"} {print;fflush()}')
}
seed_filter() {
local message file count size point
while read -r -d '*' line; do
file=${line%:*}
message+="\n$file"
echo "$message" > "$msgfile"
file=${file#reading seed file }
count=1
size=$(( $(wc -c < "$file") / 1000000 + 1 ))
echo "#$message"
while read -r -n1 point; do
[[ $point = '*' ]] || break
((count++))
echo "$(( 100 * count / size ))%"
done
read -r message;
echo "$message" > "$msgfile"
done
}
if [[ -z $url ]]; then
url=$(zenity --entry \
--title=zsync \
--text="Enter URL to zsync file" \
--width=500 \
--height=100 \
) || exit
fi
if [[ -z $seedfile || ! -e $seedfile ]]; then
seedfile=$(zenity --file-selection \
--title="zsync $url" \
--text="Choose a seed-file" \
)
fi
{
zsync ${seedfile:+-i "$seedfile"} "$url" \
> >(down_filter >&3) 2> >(seed_filter >&3)
} 3> >(zenity --progress \
--title="zsync $url" \
--width=500 \
--height=100 \
)
У сценария будет много недостатков. Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \ , * или строки новой строки.
Ожидать ошибок; Я действительно не проверял это.
В любом случае, я никогда не слышал о zsync раньше. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты:
zsync имеет ужасный выход для синтаксического анализа.
Я сказал, что я сумасшедший.
#!/bin/bash
url=$1
seedfile=$2
tempdir=$(mktemp -d)
msgfile=$tempdir/message
trap 'rm -rf "$tempdir"' EXIT
down_filter() {
local message line percent speed
echo "Downloading zsync file" > "$msgfile"
read -r -n1 _
while read -r line; do
if [[ $line = [-#]* ]]; then
read -r _ percent speed <<< "$line"
echo "#$(<"$msgfile")\n$speed"
if (( ${percent%%.*} < 100 )); then
echo "$percent"
else
echo "99.9%"
fi
fi
done < <(awk 'BEGIN{RS="[\r\n]"} {print;fflush()}')
}
seed_filter() {
local message file count size point
while read -r -d '*' line; do
file=${line%:*}
message+="\n$file"
echo "$message" > "$msgfile"
file=${file#reading seed file }
count=1
size=$(( $(wc -c < "$file") / 1000000 + 1 ))
echo "#$message"
while read -r -n1 point; do
[[ $point = '*' ]] || break
((count++))
echo "$(( 100 * count / size ))%"
done
read -r message;
echo "$message" > "$msgfile"
done
}
if [[ -z $url ]]; then
url=$(zenity --entry \
--title=zsync \
--text="Enter URL to zsync file" \
--width=500 \
--height=100 \
) || exit
fi
if [[ -z $seedfile || ! -e $seedfile ]]; then
seedfile=$(zenity --file-selection \
--title="zsync $url" \
--text="Choose a seed-file" \
)
fi
{
zsync ${seedfile:+-i "$seedfile"} "$url" \
> >(down_filter >&3) 2> >(seed_filter >&3)
} 3> >(zenity --progress \
--title="zsync $url" \
--width=500 \
--height=100 \
)
У сценария будет много недостатков. Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \ , * или строки новой строки.
Ожидать ошибок; Я действительно не проверял это.
В любом случае, я никогда не слышал о zsync раньше. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты:
zsync имеет ужасный выход для синтаксического анализа.
Это говорит о том, что я, по-видимому, сумасшедший.
#! / Bin / bash url = $ 1 seedfile = $ 2 tempdir = $ (mktemp -d) msgfile = $ tempdir / message trap 'rm -rf "$ tempdir"' EXIT down_filter () {локальная строка сообщения процентная скорость echo "Загрузка zsync-файла" & gt; «$ msgfile» читать -r -n1 _ во время чтения строки -r; do, если [[$ line = [- #] *]]; затем прочитайте -r _ percent speed & lt; & lt; "$ line" echo "# $ (& lt;" $ msgfile ") \n $ speed" if (($ {percent %%. *} & lt; 100)); затем echo «$ percent» else echo «99.9%» fi fi done & lt; & lt; (awk 'BEGIN {RS = "[\r \n]"} {print; fflush ()}')} seed_filter () {локальная точка количества файлов сообщений при чтении -r -d '*' line; do file = $ {line%: *} message + = "\n $ file" echo "$ message" & gt; «$ msgfile» file = $ {file # read seed file} count = 1 size = $ (($ (wc -c & lt; "$ file") / 1000000 + 1)) echo "# $ message" при чтении -r -n1 точка; do [[$ point = '*']] || break ((count ++)) echo "$ ((100 * count / size))%" done read -r message; echo "$ message" & gt; "$ msgfile" done}, если [[-z $ url]]; затем url = $ (zenity -entry \ --title = zsync \ --text = "Введите URL-адрес в файл zsync" \ --width = 500 \ --height = 100 \) || exit fi if [[-z $ seedfile || ! -e $ seedfile]]; затем seedfile = $ (zenity -file-selection \ --title = "zsync $ url" \ --text = "Выбрать файл-семестр" \) fi {zsync $ {seedfile: + -i "$ seedfile"} "$ url" \ & gt; & gt; (down_filter & gt; & amp; 3) 2 & gt; & gt; (seed_filter & gt; & amp; 3)} 3 & gt; & gt; (zenity --progress \ --title = "zsync $ url" \ --width = 500 \ --height = 100 \)
В сценарии будет много недостатков , Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \
, *
или новые строки.
Ожидайте ошибок; Я вообще не тестировал это.
В любом случае, я никогда раньше не слышал о zsync. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты: [!d3] [!d4]
zsync имеет ужасный выход для синтаксического анализа.
Это говорит о том, что я, по-видимому, сумасшедший.
#! / Bin / bash url = $ 1 seedfile = $ 2 tempdir = $ (mktemp -d) msgfile = $ tempdir / message trap 'rm -rf "$ tempdir"' EXIT down_filter () {локальная строка сообщения процентная скорость echo "Загрузка zsync-файла" & gt; «$ msgfile» читать -r -n1 _ во время чтения строки -r; do, если [[$ line = [- #] *]]; затем прочитайте -r _ percent speed & lt; & lt; "$ line" echo "# $ (& lt;" $ msgfile ") \n $ speed" if (($ {percent %%. *} & lt; 100)); затем echo «$ percent» else echo «99.9%» fi fi done & lt; & lt; (awk 'BEGIN {RS = "[\r \n]"} {print; fflush ()}')} seed_filter () {локальная точка количества файлов сообщений при чтении -r -d '*' line; do file = $ {line%: *} message + = "\n $ file" echo "$ message" & gt; «$ msgfile» file = $ {file # read seed file} count = 1 size = $ (($ (wc -c & lt; "$ file") / 1000000 + 1)) echo "# $ message" при чтении -r -n1 точка; do [[$ point = '*']] || break ((count ++)) echo "$ ((100 * count / size))%" done read -r message; echo "$ message" & gt; "$ msgfile" done}, если [[-z $ url]]; затем url = $ (zenity -entry \ --title = zsync \ --text = "Введите URL-адрес в файл zsync" \ --width = 500 \ --height = 100 \) || exit fi if [[-z $ seedfile || ! -e $ seedfile]]; затем seedfile = $ (zenity -file-selection \ --title = "zsync $ url" \ --text = "Выбрать файл-семестр" \) fi {zsync $ {seedfile: + -i "$ seedfile"} "$ url" \ & gt; & gt; (down_filter & gt; & amp; 3) 2 & gt; & gt; (seed_filter & gt; & amp; 3)} 3 & gt; & gt; (zenity --progress \ --title = "zsync $ url" \ --width = 500 \ --height = 100 \)
В сценарии будет много недостатков , Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \
, *
или новые строки.
Ожидайте ошибок; Я вообще не тестировал это.
В любом случае, я никогда раньше не слышал о zsync. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты: [!d3] [!d4]
zsync имеет ужасный выход для синтаксического анализа.
Это говорит о том, что я, по-видимому, сумасшедший.
#! / Bin / bash url = $ 1 seedfile = $ 2 tempdir = $ (mktemp -d) msgfile = $ tempdir / message trap 'rm -rf "$ tempdir"' EXIT down_filter () {локальная строка сообщения процентная скорость echo "Загрузка zsync-файла" & gt; «$ msgfile» читать -r -n1 _ во время чтения строки -r; do, если [[$ line = [- #] *]]; затем прочитайте -r _ percent speed & lt; & lt; "$ line" echo "# $ (& lt;" $ msgfile ") \n $ speed" if (($ {percent %%. *} & lt; 100)); затем echo «$ percent» else echo «99.9%» fi fi done & lt; & lt; (awk 'BEGIN {RS = "[\r \n]"} {print; fflush ()}')} seed_filter () {локальная точка количества файлов сообщений при чтении -r -d '*' line; do file = $ {line%: *} message + = "\n $ file" echo "$ message" & gt; «$ msgfile» file = $ {file # read seed file} count = 1 size = $ (($ (wc -c & lt; "$ file") / 1000000 + 1)) echo "# $ message" при чтении -r -n1 точка; do [[$ point = '*']] || break ((count ++)) echo "$ ((100 * count / size))%" done read -r message; echo "$ message" & gt; "$ msgfile" done}, если [[-z $ url]]; затем url = $ (zenity -entry \ --title = zsync \ --text = "Введите URL-адрес в файл zsync" \ --width = 500 \ --height = 100 \) || exit fi if [[-z $ seedfile || ! -e $ seedfile]]; затем seedfile = $ (zenity -file-selection \ --title = "zsync $ url" \ --text = "Выбрать файл-семестр" \) fi {zsync $ {seedfile: + -i "$ seedfile"} "$ url" \ & gt; & gt; (down_filter & gt; & amp; 3) 2 & gt; & gt; (seed_filter & gt; & amp; 3)} 3 & gt; & gt; (zenity --progress \ --title = "zsync $ url" \ --width = 500 \ --height = 100 \)
В сценарии будет много недостатков , Любое небольшое изменение в выходе zsync в более новой версии, скорее всего, сломает его. (Проверяется только на zsync Ubuntu 10.04 v0.6.1). По какой-то нечетной причине он выводит часть прогресса на stdout, а некоторые - на stderr, что делает его сложным для синтаксического анализа.
Кроме того, он не будет обрабатывать определенные нечетные символы в именах файлов, например \
, *
или новые строки.
Ожидайте ошибок; Я вообще не тестировал это.
В любом случае, я никогда раньше не слышал о zsync. Это аккуратный инструмент, поэтому спасибо, что сообщили мне об этом. :)
Скриншоты: [!d3] [!d4]