debian.org / О Debian Где взять Debian Поддержка Уголок разработчика Новости Wiki

Автор Тема: Помогите со скриптом!  (Прочитано 761 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Помогите со скриптом!
« : 09 Февраль 2017, 21:24:41 »
Здравствуйте!

имеется такая задачка.

Нужно скачать архив в формате gz по ссылке, распаковать его, распакованный файл перенести в определенную директорию с заменой существующего. ну и добавить в cron чтоб выполнялся к примеру в 23:00 каждый день!

Спасибо!

Cообщение объединено [time]10 Февраля 2017, 17:22:36[/time]
я новичек в этом деле, полазил по форумам вот что поучилось из этого. Будет ли работать этот скрипт? незнаю как время поставить чтоб запускался когда надо.

#!/bin/bash
cd /home/user
wget http://example.com/file.gz | gunzip file.gz
SRC=/home/user
DEST=/home/user/new
cd $SRC
for i in $(ls *.txt) #перемещаем файлы с расширением txt
do
 mv $i $DEST

exit 0
« Последнее редактирование: 06 Март 2017, 03:50:56 от ogost »
 

Оффлайн vic5710

  • Сообщений: 411
  • не умножайте сущностей сверх необходимых
Re: Помогите со скриптом!
« Ответ #1 : 10 Февраль 2017, 13:42:14 »
а если wget не докачает до конца?
у тебя не tar.gz архив?
http://wiki.dieg.info/tar
https://inside-it.ru/10-komand-tar-s-primerami-dlya-sozdaniya-raspakovki-arhivov-v-linux/
man crontab
man wget
man tar
« Последнее редактирование: 10 Февраль 2017, 13:57:24 от vic5710 »
 

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Re: Помогите со скриптом!
« Ответ #2 : 10 Февраль 2017, 15:31:13 »
нет именно gz архив

хм.. насчет не докачает не подумал...видимо нужно еще проверить как то докачал или нет )
 

Оффлайн vic5710

  • Сообщений: 411
  • не умножайте сущностей сверх необходимых
Re: Помогите со скриптом!
« Ответ #3 : 10 Февраль 2017, 17:34:32 »
нет именно gz архив
gzip может запаковать один файл
 

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Re: Помогите со скриптом!
« Ответ #4 : 10 Февраль 2017, 18:22:11 »
все верно в архиве всего 1 файл, просто файл обновляется на сайте и он в доступе только в архиве )

если wget применить с -r -nc то будет ли он без проблем подменять старый файл и докачивать до конца?
« Последнее редактирование: 10 Февраль 2017, 18:23:57 от Ta1fun »
 

Оффлайн vic5710

  • Сообщений: 411
  • не умножайте сущностей сверх необходимых
Re: Помогите со скриптом!
« Ответ #5 : 10 Февраль 2017, 19:29:02 »
имхо лучше код возврата использовать
DEST=/home/user/new/
cd $DEST
wget http://example.com/file.gz
RET=$?
if [ "$RET"=="0" ]
then
 echo OK
 gunzip file.gz
else
 echo ERROR
fi
http://www.gnu.org/software/wget/manual/wget.html#Exit-Status
« Последнее редактирование: 10 Февраль 2017, 19:47:16 от vic5710 »
 

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Re: Помогите со скриптом!
« Ответ #6 : 11 Февраль 2017, 10:07:07 »
а при такой распаковке разве файл будет подменятся на новый? т.е. не будет создваться новый типо file1.txt и так далее?
 

Оффлайн vic5710

  • Сообщений: 411
  • не умножайте сущностей сверх необходимых
Re: Помогите со скриптом!
« Ответ #7 : 11 Февраль 2017, 12:46:44 »
что мешает попробовать?
sh-3.2$ ls
1.txt
sh-3.2$ gzip 1.txt
sh-3.2$ ls
1.txt.gz
sh-3.2$ touch 1.txt
sh-3.2$ ls
1.txt 1.txt.gz
sh-3.2$ gunzip -f 1.txt.gz
sh-3.2$ ls
1.txt
sh-3.2$
 

Оффлайн ZEN

  • Сообщений: 207
Re: Помогите со скриптом!
« Ответ #8 : 11 Февраль 2017, 13:46:54 »
вот пример с распаковкой файла на лету:
#!/usr/bin/env bash

URL="ftp://ftp.perl.org/pub/CPAN/modules/03modlist.data.gz";
OUT_FILE="$HOME/stats.txt";
TMP_FILE="$(mktemp)";

function finally () {
    rm "$TMP_FILE";
}

trap finally EXIT;

curl -s "$URL" | zcat > "$TMP_FILE" && cat "$TMP_FILE" > "$OUT_FILE";

exit 0;
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо
 

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Re: Помогите со скриптом!
« Ответ #9 : 11 Февраль 2017, 18:57:21 »
спасибо )) буду читать man и допиливать ))
 

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Re: Помогите со скриптом!
« Ответ #10 : 14 Февраль 2017, 22:03:42 »
что если сначала добавить строку чтоб удалялся файл file.gz командой rm*


DEST=/home/user/new/
cd $DEST
rm *
wget http://example.com/file.gz
RET=$?
if [ "$RET"=="0" ]
then
 echo OK
 gunzip file.gz
else
 echo ERROR
fi
« Последнее редактирование: 06 Март 2017, 03:51:20 от ogost »
 

Оффлайн ZEN

  • Сообщений: 207
Re: Помогите со скриптом!
« Ответ #11 : 14 Февраль 2017, 23:56:43 »
эм... нет, не делай так)
DEST=/home/user/new/
cd $DEST
если DEST не существует, то ты не перейдешь из текущей рабочей директории. А если это твой /home, то следующая строка с rm начнет удалять все что попадает под маску (на директории будет ругаться, но файлам хана).
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо
 

Оффлайн vic5710

  • Сообщений: 411
  • не умножайте сущностей сверх необходимых
Re: Помогите со скриптом!
« Ответ #12 : 15 Февраль 2017, 04:08:07 »
маны читать надо
gunzip -f
« Последнее редактирование: 15 Февраль 2017, 04:09:48 от vic5710 »
 

Онлайн ogost

  • Сообщений: 2587
  • Linux Registered User #547151
Re: Помогите со скриптом!
« Ответ #13 : 15 Февраль 2017, 04:51:05 »
Используем тэги! Оформляем посты правильно! Или получаем предупреждение!

Оффлайн Ta1fun

  • Topic Author
  • Сообщений: 7
Re: Помогите со скриптом!
« Ответ #14 : 04 Март 2017, 17:46:16 »

rm xmltv.xml;
wget https://www.teleguide.info/download/new3/xmltv.xml.gz || exit;
gunzip xmltv.xml.gz;

вот так надо
« Последнее редактирование: 06 Март 2017, 03:51:48 от ogost »
 

Теги: