Показаны сообщения с ярлыком wget. Показать все сообщения
Показаны сообщения с ярлыком wget. Показать все сообщения

вторник, 5 октября 2010 г.

wget: менеджер заначек командной строки

В Windows для многих является совершенно привычной вещью менеджер закачек. Linux нам то же его предоставляет при том несколько вариантов, но мы рассмотрим один из самых популярных, особенно когда дело касается больших файлов: консольную качалку wget. На самом деле ее интерфейс весьма прост, поэтому начнем с ней знакомится не откладывая   дело в долгий ящик.
Решим с помощью нее несколько простых задач(качать будем ну например CentOS с зеркала Яндекс):
Задача 1 просто скачать файл:
wget       http://mirror.yandex.ru/centos/5.5/isos/i386/CentOS-5.5-i386-bin-DVD.iso
В этом случае файл сохранится в домашнем каталоге. Или в том каталоге в который перешел пользователь до начала загрузки wget'ом
Задача 2  Скачать и сохранить файл в определенный каталог:
wget  -P /home/auser/download      http://mirror.yandex.ru/centos/5.5/isos/i386/CentOS-5.5-i386-bin-DVD.iso
Не забываем про волшебное сочетание: ./ Это указывает на текущий каталог и заставляет уже в нем искать необходимую папку. Обратите внимание при необходимости иерархия папок указанная после ключа -P будет создана.
Задача 3: скачать файлы из списка, хранящемся в файле:wget -i spisok.txt
В сам файл нужно записать прямые ссылки на файлы. И wget последовательно скачает файлы из списка.
Задача 4: докачка файла:
wget   -с    http://mirror.yandex.ru/centos/5.5/isos/i386/CentOS-5.5-i386-bin-DVD.iso
Здесь важно предварительно перейти в директорию, где хранится нужный файл, а ключ c(continue) укажет что необходима докачка.    
Задача 5: создать зеркальную копию сайта(на примере http://mirror.yandex.ru/):
wget -r  http://mirror.yandex.ru/
Ключ -r заставляет заходить wget последовательно во все подкаталоги и воссоздавать всю структуру каталогов у вас на компьютере. Так же можно указать уровень рекурсии, то приведет к скачиванию только части каталогов. Допустим файловая структура site/content/1.htm  и внутри  content еще есть каталог subcontent. Вот если мы укажем уровень рекурсии 2, то будет загружен лишь каталог content , а подкаталог subcontent нет.      
Задача 6:отключить машину по окончании загрузки:
sudo wget   http://mirror.yandex.ru/centos/5.5/isos/i386/CentOS-5.5-i386-bin-DVD.iso &&shutdown -h now
Нам обязательно нужно предоставить права суперпользователя для того чтобы могла сработать команда shutown, флаг -h(halt) говорит о том что компьютер нужно выключить а now я думаю объяснять не надо:) При помощи операции логического И(&&) мы объединяем две операции для последовательного выполнения, т.е. сначала будет выполнено скачивание файла, а затем команда shutdown. Внимательно изучите вывод команды wget --help в нем много интересного:)  
Удачных закачек!  

суббота, 31 июля 2010 г.

Заметки о python в народном хозяйстве linuxoида: вызываем утилиты командной строки

Язык python разработанный Гвидо ван Россум  при всей своей простате синтаксиса обладает мощными возможностями. Поэтому находит активное применение как в науке, так и в повседневной работе с системой. Сегодня я хотел бы показать как вызывать приложения командной строки из python, для примера рассмотрим общеизвестную консольную утилиту wget.  Эта утилита имеет следующий синтаксис вызова: wget [параметры ] [адрес]. Пример вызова:
 wget  http://www.google.ru , а если хотим сохранить закаченный материал в каком то другом месте то: wget -P /path/to/save  http://www.google.ru Просто? А как это запрограммировать в python? Для определенности поставим задачу так: написать функцию, которая бы обеспечивала загрузку заданного файла либо в домашний, каталог, либо в заданный каталог. Фактически нам надо чтобы функция генерировала и передавала на исполнение командной оболочке в первом случае: wget url, а во втором: wget -P /path/to/save url. И здесь нам на помощь приходит модуль subprocess и его функция call(*popenargs, **kwargs) . Она позволяет вызвать приложение и передать ему набор аргументов в виде кортежа:
 retcode=subprocess.call(["wget","www.site.com"]). в retcode идет код возврата от вызванной программы. В первом параметры передаем имя программы для вызова, а во втором параметр, при чем каждый из них идет как член списка. А вот собственно и код самой функции полностью:
import subprocess #импортируем модуль subprocess
def basic_download(key,url):  # определяем функцию с двумя параметрами(первый содержит #ключи,а второй адрес)   
 if url=='':  #если адрес пуст вернем ошибку                   
     return -1
 if key=='':  # если параметр key не задан, вызываем wget с параметрами по умолчанию... 
    retcode=subprocess.call(["wget",url])
    return retcode
 else: #иначе
    key='-P'+key #конкатенация ключа и пути сохранения  
    retcode=subprocess.call(["wget",key,url])
    return retcode     
 Это базовый пример, но  этот модуль предоставляет куда большие возможности, в чем можно убедится заглянув сюда
Смело указывайте на ошибки и неточности, ведь я только начинаю свой путь в python. 
P.S. надеюсь хватит сил довести до полноценной GUI оболочки для wget