"Сервер" (старенький компьютер с Debian) установлен, настроен и подключен к сети.
Эту машинку планировалось использовать как файловый сервер, с доступом к файлам по сети по протоколу smb.
На сервере установлена торентокачалка Transmission, она запускается как демон при загрузке системы, а для управления используется Web interface. Очень удобно. Управлять загрузками, раздачами, добавлениями, удалениями можно при помощи любого веб-браузера.
Для того чтобы иметь возможность скачивания файлов из интернета на сервер по обычным протоколам http, ftp и при этом автоматизировать процесс, на сервере каждые 15 минут, по cron запускается маленький скрипт. Скрипт проверяет определённый файл на наличие в нём ссылок на скачивание. И если в файле присутствует ссылка(ки), начинается загрузка указанного в ней файла.
Как это работает...
Одно из условий для удобной работы, наличие прав на запись в какую-либо директорию на файловом сервере.
Для того, чтобы иметь возможность указать скрипту ссылку, по которой вы хотите скачать файл, необходимо вставить эту ссылку (или несколько ссылок) в текстовый файл находящийся в доступной вам директории на файловом сервере. Необходимо открыть этот файл на любом вашем компьютере или смартфоне, вставить туда ссылку и закрыть файл при этом сохранив изменения. Через некоторое время (у меня каждые 15 минут часа), запустится скрипт и начнётся скачивание указанного в ссылке файла.
Сам файл-задание (файл в котором вы будете указывать ссылки), для удобства, можно разместить в той же директории, в которой загруженные файлы будут доступны для дальнейшего использования по сети.
Я так и сделал, разместил файл-задание в папке с загружаемыми файлами.
Подробнее о скрипте
#!/bin/bash - То с чего начинается каждый bash скрипт
Далее, для удобства, все необходимые рабочие директории, заданы как переменные в самом начале скрипта. Пути к файлам и директориям легко изменить на ваше усмотрение.
dldir="/media/user/Downloads/" - Главная директория для загрузок.
tmpdir="/media/user/Downloads/.wgettmp/" - Директория для хранения временных файлов.
dlfile="/media/user/Downloads/dlinks.txt" - Текстовый файл в который необходимо помещать ссылки на скачивание.
Для уникальности имени временного файла (который будет формироваться каждый раз при обработке скрипта, при условии что файл-задание содержит ссылки) создаётся временной тэг который будет отображать День, Час, Минуту и Секунду, в названии временного файла.
timestamp=`date +%d%H%M%S`- Делаем временной тэг, который будет использоваться для уникальности временного файла.
tmpfile="/media/user/Downloads/.wgettmp/dlinks.${timestamp}" - Путь по которому содержится временный файл и формрирование его уникального имени.
Все переменные объявлены, далее следует проверка файла-задания на доступность, примитивная проверка на содержание "ссылки" и загрузка файла по ссылке(ам) из файла-задания. Если вы не создавали, или удалили файл-задание, то скрипт создаст его автоматически.
if [ -w $dfile ]; then - Проверка файла на доступность.
if [ $(stat -c %s $dfile) -gt 5 ]; then - Если файл существует и доступен для записи, то проверяется размер самого файла, не пуст ли он.
cp $dlfile $tmpfile - Если файл не пуст то содержимое копируется во временный файл с которым и будет работать программа загрузчик.
cp /dev/null $dlfile - Файл-задание отчищается для дальнейшего использования.
wget -P $dldir -c -t0 -i $tmpfile -nv -a $tmpdir/log - Запускается программа Wget которая попытается загрузить файл на который указывает ссылка во временном файле. Загрузчик запускается с минимальным (параметр -nv) логированием, сам лог находится во временной директории.
echo "************" >> $tmpdir/log - Для удобства чтения логов добавляем разделитель который отделяет события.
rm $tmpfile - По окончании загрузки, удаляем временный файл.
else
exit 0 - В том случае если файл задание оказался пуст, просто прерываем выполнение скрипта и выходим (до следующего запуска скрипта).
fi
else
touch $dlfile - Создаём файл-задание, если он не существует.
fi
Ниже привожу сам скрипт (раскрашен в цвета дефолтного gedit):
Можно просто скопировать содержимое этого скрипта в файл и сохранить его с разрешением .sh ( у меня он называется dload.sh). Также необходимо сделать файл запускаемым.
Отредактировать переменные в которых указываются пути по которым находятся директории (если их ещё нет, то необходимо создать) и файлы в соответствии с вашей конфигурацией.
Сам файл со скриптом может быть размещён в любом месте. Но удобнее в рабочей директории пользователя. И уже оттуда он будет запускаться по расписанию (по cron).
Эту машинку планировалось использовать как файловый сервер, с доступом к файлам по сети по протоколу smb.
На сервере установлена торентокачалка Transmission, она запускается как демон при загрузке системы, а для управления используется Web interface. Очень удобно. Управлять загрузками, раздачами, добавлениями, удалениями можно при помощи любого веб-браузера.
Для того чтобы иметь возможность скачивания файлов из интернета на сервер по обычным протоколам http, ftp и при этом автоматизировать процесс, на сервере каждые 15 минут, по cron запускается маленький скрипт. Скрипт проверяет определённый файл на наличие в нём ссылок на скачивание. И если в файле присутствует ссылка(ки), начинается загрузка указанного в ней файла.
Как это работает...
Одно из условий для удобной работы, наличие прав на запись в какую-либо директорию на файловом сервере.
Для того, чтобы иметь возможность указать скрипту ссылку, по которой вы хотите скачать файл, необходимо вставить эту ссылку (или несколько ссылок) в текстовый файл находящийся в доступной вам директории на файловом сервере. Необходимо открыть этот файл на любом вашем компьютере или смартфоне, вставить туда ссылку и закрыть файл при этом сохранив изменения. Через некоторое время (у меня каждые 15 минут часа), запустится скрипт и начнётся скачивание указанного в ссылке файла.
Сам файл-задание (файл в котором вы будете указывать ссылки), для удобства, можно разместить в той же директории, в которой загруженные файлы будут доступны для дальнейшего использования по сети.
Я так и сделал, разместил файл-задание в папке с загружаемыми файлами.
Подробнее о скрипте
#!/bin/bash - То с чего начинается каждый bash скрипт
Далее, для удобства, все необходимые рабочие директории, заданы как переменные в самом начале скрипта. Пути к файлам и директориям легко изменить на ваше усмотрение.
dldir="/media/user/Downloads/" - Главная директория для загрузок.
tmpdir="/media/user/Downloads/.wgettmp/" - Директория для хранения временных файлов.
dlfile="/media/user/Downloads/dlinks.txt" - Текстовый файл в который необходимо помещать ссылки на скачивание.
Для уникальности имени временного файла (который будет формироваться каждый раз при обработке скрипта, при условии что файл-задание содержит ссылки) создаётся временной тэг который будет отображать День, Час, Минуту и Секунду, в названии временного файла.
timestamp=`date +%d%H%M%S`- Делаем временной тэг, который будет использоваться для уникальности временного файла.
tmpfile="/media/user/Downloads/.wgettmp/dlinks.${timestamp}" - Путь по которому содержится временный файл и формрирование его уникального имени.
Все переменные объявлены, далее следует проверка файла-задания на доступность, примитивная проверка на содержание "ссылки" и загрузка файла по ссылке(ам) из файла-задания. Если вы не создавали, или удалили файл-задание, то скрипт создаст его автоматически.
if [ -w $dfile ]; then - Проверка файла на доступность.
if [ $(stat -c %s $dfile) -gt 5 ]; then - Если файл существует и доступен для записи, то проверяется размер самого файла, не пуст ли он.
cp $dlfile $tmpfile - Если файл не пуст то содержимое копируется во временный файл с которым и будет работать программа загрузчик.
cp /dev/null $dlfile - Файл-задание отчищается для дальнейшего использования.
wget -P $dldir -c -t0 -i $tmpfile -nv -a $tmpdir/log - Запускается программа Wget которая попытается загрузить файл на который указывает ссылка во временном файле. Загрузчик запускается с минимальным (параметр -nv) логированием, сам лог находится во временной директории.
echo "************" >> $tmpdir/log - Для удобства чтения логов добавляем разделитель который отделяет события.
rm $tmpfile - По окончании загрузки, удаляем временный файл.
else
exit 0 - В том случае если файл задание оказался пуст, просто прерываем выполнение скрипта и выходим (до следующего запуска скрипта).
fi
else
touch $dlfile - Создаём файл-задание, если он не существует.
fi
Ниже привожу сам скрипт (раскрашен в цвета дефолтного gedit):
#!/bin/bash
dldir="/media/user/Downloads/"
tmpdir="/media/user/Downloads/.wgettmp/"
dlfile="/media/user/Downloads/dlinks.txt"
timestamp=`date +%d%H%M%S`
tmpfile="/media/user/Downloads/.wgettmp/dlinks.${timestamp}"
if [ -w $dfile ]; then
if [ $(stat -c %s $dfile) -gt 5 ]; then
cp $dlfile $tmpfile
cp /dev/null $dlfile
wget -P $dldir -c -t0 -i $tmpfile -nv -a $tmpdir/log
echo "************" >> $tmpdir/log
rm $tmpfile
else
exit 0
fi
else
touch $dlfile
fi
Можно просто скопировать содержимое этого скрипта в файл и сохранить его с разрешением .sh ( у меня он называется dload.sh). Также необходимо сделать файл запускаемым.
Отредактировать переменные в которых указываются пути по которым находятся директории (если их ещё нет, то необходимо создать) и файлы в соответствии с вашей конфигурацией.
Сам файл со скриптом может быть размещён в любом месте. Но удобнее в рабочей директории пользователя. И уже оттуда он будет запускаться по расписанию (по cron).
Комментариев нет:
Отправить комментарий