Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 8262 В разделе
Sysadmin
от January 20th, 2017,
В подшивках: Bash, Linux, Python
Понадобится 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 и забываете.
Fortune cookie: Today's spam: wow, this is the strongest women of the world and naked))
Leave a Reply