LINUX.ORG.RU

Узнать версию по с помощью командной строки

 


0

2

Доброе утро.

Сложно сформулировать свою мысль в 5 утра, но я все же попробую. На сайте Tor Projectа размещены ссылки для скачивания Tor Browserа для онтопика. Ссылка имеет такой вид /dist/torbrowser/11.0.14/tor-browser-linux64-11.0.14_en-US.tar.xz Вопрос: как спарсить только версию из этой ссылки? Чтобы получить «11.0.14».

Пока только смог молучить портянку используя

#!/bin/sh

version="$(curl -s https://mirror.oldsql.cc/tor/download/ | grep ".tar.xz")"

echo "$version"
        <a class="downloadLink" href="/dist/torbrowser/11.0.14/tor-browser-linux64-11.0.14_en-US.tar.xz">
        <a class="btn btn-primary mt-4 downloadLink" href="/dist/torbrowser/11.0.14/tor-browser-linux64-11.0.14_en-US.tar.xz">Download for Linux</a>
        <a class="link" href="/dist/torbrowser/11.0.14/tor-browser-linux64-11.0.14_en-US.tar.xz.asc" download><span class="nick text-white" style="text-decoration: underline;">Signature</span></a>

grep -o -E "dist/torbrowser/([^/]+)/tor-browser-linux64-"

Потом наверно как-то уж можно отрезать всегда одинаковые начало и конец строки, оставив версию

firkax ★★★★★
()
Ответ на: комментарий от firkax

grep -o -E "dist/torbrowser/([^/]+)/tor-browser-linux64-" | cut -c 17-23) вот так почти то что нужно! Правда вывод будет в трех экземплярах

Kiskis
() автор топика
Ответ на: комментарий от Kiskis

Через | head -1 поправил. Теперь торт!

Kiskis
() автор топика
Ответ на: комментарий от tz4678_2

А если каким-то чудом версия для W будет старше версии L?

Kiskis
() автор топика
Ответ на: комментарий от caoutchouckcha

Ага, нет. Видимо, он предполагает, что обновляться будет всегда через тор, а там адрес всегда доступен по его мнению

[AppUpdate]
URL=https://aus1.torproject.org/torbrowser/update_3/%CHANNEL%/%BUILD_TARGET%/%VERSION%/%LOCALE%

caoutchouckcha
()
Ответ на: комментарий от caoutchouckcha

Вроде тот. У меня тоже есть некоторые проблемы с доступом и актуальности зеркал…

Kiskis
() автор топика

Да не парсят html регулярками, есть нормальные парсеры html:

basename $(dirname $(lynx -nonumbers -dump -listonly https://mirror.oldsql.cc/tor/download/ | grep tar\.xz$ | sort -u))
arson ★★★★★
()
Ответ на: комментарий от arson

В его случае не надо парсить html, надо получить доступ к json/xml/ini (а его видимо нет, т.к. зеркала говно).

caoutchouckcha
()
Ответ на: комментарий от YAR

Спасибо! А чем проще и лучше прочекать доступность зеркал? С курлом тут потанцевал, но он «застревает» на недоступных зеркалах. А например, requests, который в пайтоне используют сразу говорит доступен он или нет.

Kiskis
() автор топика
Ответ на: комментарий от Kiskis

он «застревает» на недоступных зеркалах

timeout используй

сразу говорит доступен он или нет

А что он сразу скажет, если у меня, к примеру, пинги по 10 секунд?

YAR ★★★★★
()
Ответ на: комментарий от Kiskis

С курлом тут потанцевал, но он «застревает» на недоступных зеркалах

Добавь таймаут. Если список большой, запусти через parallel или xargs.

curl has two options: --connect-timeout and --max-time

caoutchouckcha
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.