Cron pobranie pliku pdf i zapisanie na hostingu w wybranym folderze


(madek456) #1

Witajcie,

Poszukuję sposobu w jaki można pobrać plik pdf ze stałej lokalizacji np. http://www.xxx.pl/jakis.pdf do wskazanego folderu na ftp. i zmienić jego nazwę na wskazaną z góry np. folder/plik1.pdf

Zdarzają się, że wprowadzane są co jakiś czas zmiany na pewnej stronie z której pobieram ręcznie. Jednak plików takich jest 10 i chciałbym to zautomatyzować.

Dziękuję za pomoc.


(Direwolf) #2

A w jaki sposób chcesz określić, czy plik się zmienił, jeżeli nie zrobisz tego ręcznie (podgląd)?


(madek456) #3

Zmiana pliku to raz na tydzień lub rzadziej. Więc jeśli skrypt będzie odpalany raz dziennie w nocy obciążenie znikome.


(krystian3w) #4

Np. po rozmiarze może próbować - inny rozmiar, plik się zmienił (np. skompresowali).
Można też pdf porównywać ale to kuleje i czasem widzi różnice w miejscach gdzie jej praktycznie nie ma i wtedy nie zastąpi erraty.


(Direwolf) #5

Pytam bardziej po kontem nazwy pobieranego pliku. Przykładowo u nas po zmianie regulaminu, plik PDF nazywa się Regulamin_Luty_2017, a później Regulamin_Grudzien_2017.

Jedyne, co w tej sytuacji przychodzi mi na myśl, to ncftp, aczkolwiek nie mam pewności co do automatycznej zmiany nazwy…


(Fizyda) #6

Trochę mało informacji. Gdzie i jak chcesz uruchamiać ten plik? W jakiej technologi/języku?


(Domker) #7

To zależy w gruncie rzeczy od hostingu i czy Cron jest w piaskownicy, aby nie można było wywoływać programów typu wget itp.
Możesz spróbować np. curl, czy zadziała:
*/5 * * * * /usr/bin/curl http://www.xyz.pl/plik.pdf > /pełna/ścieżka/do/katalogu/ftp/plik1.pdf 2>&1
(jeżeli wystąpi błąd to będziesz miał go w plik1.pdf, który otworzysz jako zwykły tekst, bo jest przekierowanie błędów na końcu)

Oczywiście “curl” może być w innej lokalizacji. Aby dowiedzieć się w jakiej zrób zadanie crona z poleceniem np.:
whereis curl > /ścieżka/do/pliku/na/ftp/log_curl.txt 2>&1
lub
which curl > /ścieżka/do/pliku/na/ftp/log_curl.txt 2>&1

Na hostingu pewnie dostępu na narzędzi typu wget nie masz poprzez Cron’a.
Jeżeli obsługiwane jest PHP to można napisać prosty downloader w PHP, a przez Cron’a tylko uruchamiać dany plik php.


(madek456) #8

@Domker

Twoje podpowiedzi pomogły mi rozwiązać problem. Dziękuję.