INT 21h

Домашняя страница самого страшного прерывания

Как быстренько состряпать автоматическую зеркалилку ПО

№ 8262 В разделе "Администрирование" от January 20th, 2017,

Понадобится python3, urllib3, bash, aria2c (потому, что может в несколько потоков качать) и curl.

Сначала нужно научиться получать список файлов для скачивания. Это не сложно. Я просто получил файл по урлу, выделил из него все ссылки и взял только те, что ссылаются в нужное место. Ничего сложного.

from html.parser import HTMLParser
import urllib3
links = []
http = urllib3.PoolManager()
pagedata = http.request('GET', 'http://dbeaver.jkiss.org/download/')

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag != 'a':
            return
        attr = dict(attrs)
        links.append(attr)

parser = MyHTMLParser()
parser.feed(str(pagedata.data))

for link in links:
    if ('href' in link):
        if ('/files/dbeaver-ce' in link['href']):
            print('http://dbeaver.jkiss.org'+link['href'])

Скрипт выведет список ссылок на файлы типа

# python3 mm_dbeaver.py 
http://dbeaver.jkiss.org/files/dbeaver-ce-latest-x86-setup.exe
...

Дальше еще проще! Пишем скрипт на bash, который получит страницу с ссылками и сравнит с тем, что было скачано ранее. Если появились изменения, то нужно удалить старые файлы (если требуется), получить список новых файлов и скачать их все. А в конце старый файл страницы заменяем новым.

#!/bin/bash

cd "$(dirname "$0")"

outdir="/mnt/office/distr/DBMS and Tools/DBEAVER"
touch page.last

curl -s http://dbeaver.jkiss.org/download/ > page.current

md5last=$(md5sum page.last|awk '{print $1}')
md5current=$(md5sum page.current|awk '{print $1}')

echo $md5last $md5current

if [ "$md5current" == "$md5last" ];
then
    echo "Equal"
else
    echo "Not equal. Update needed."
    echo "Cleaning $outdir/*"
    rm -rf "$outdir"
    for i in $(python3 ./mm_dbeaver.py) ; do
        aria2c -d "$outdir" "$i"
    done
    cp page.current page.last
fi

Собственно все. Кладете симлинк в /etc/cron.daily и забываете.

Нет комментариев »

Оставьте ваш комментарий »

Форма отправки комментария

CAPTCHA
*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?
  • Александр: Иногда нужна техника без доступа интернета и компьютера. Для хранения паролей, счетов, записей и т.д....