Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написал скрипт, прошу глянуть и указать явные ошибки 
:(
    Опции темы
mihanik
Дата 22.2.2011, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 13
Всего: 109



Привет.

Часто бегаю по клиентам, поэтому нужны свежие базы обновлений антивируса Касперского + удалялка вирусов + всяко разно.
Наваял сегодня небольшой скриптик, автоматизирующий ежедневные действия по закачке всего этого добра.

Прошу указать на явные упущения (в скриптах линукса не силён, только-только учусь)

Код

#!/bin/sh

# зададим путь поиска команд
PATH='/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin'

# Переходим в папку, куда будем скачивать Kaspersky Virus Removal Tool, обновления для антивируса от Microsoft и т.п.
cd /home/sheredfolder/kav-updates/

# Удалим старые файлы, что остались с прошлой закачки
rm -f index.html* setup_9.0.0.* mpam-fe.exe* updates.tar.gz

# Скачаем HTML-страницу, в тексте которой содержится имя файла для скачивания
wget --dns-timeout=20  --tries=5 http://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/

# "Вычисляем" имя файла для скачивания.
myurl='http://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/'$(grep -m 1 -o 'setup_9.*exe' index.html )

# Скачиваем AVPTool
wget --tries=5 $myurl

# Удаляем ненужный больше файл
rm -f index.html

# Скачиваем обновления для антивируса от Microsoft
wget --dns-timeout=20 --tries=5 'http://download.microsoft.com/download/DefinitionUpdates/mpam-fe.exe'

# Переходим в папку с утилитой скачивания обновлений касперского
cd /home/sheredfolder/kav-updates/retranslator/

# Скачиваем утилитой касперского последние обновления
sh ./retranslator

# Зажмём все обновления баз касперского  в архив (а-то по сети выкачивать потом на флешку туеву хучу мелких файлов замучаешься)
tar -czvf /home/sheredfolder/kav-updates/updates.tar.gz /home/sheredfolder/kav-updates/retranslator/bases/

# Возвращаемся в папку со всеми скачанными файлами
cd /home/sheredfolder/kav-updates/

# Изменяем параметры безопасности скачанных файлов
chmod 777 *






--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Фантом
Дата 22.2.2011, 23:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 10
Всего: 49



Зачем указывать PATH? Из последующего полезность этой строки как-то не ясна.
PM   Вверх
mihanik
Дата 23.2.2011, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 13
Всего: 109



Ну... А вдруг система команду "wget" найти не сможет?



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 23.2.2011, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



Цитата(mihanik @  22.2.2011,  23:29 Найти цитируемый пост)
Ну... А вдруг система команду "wget" найти не сможет?


Код

test_reqs() {
  reqs=$*
  echo "checking required programs: ${reqs}"
  CNT=0
  for u in ${reqs}
  do
    which ${u} > /dev/null
    if [ $? -ne 0 ]; then
      echo "cannot find ${u}"
      CNT=$(( $CNT  + 1 ))
    fi
  done
  if [ $CNT -ne 0 ]; then
    echo "FATAL ERROR: some requirements failed!"
    exit 1
  fi
}





test_reqs rm chmod tar wget sh

# мой скрипт

 

Это сообщение отредактировал(а) bilbobagginz - 23.2.2011, 02:54


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
mihanik
Дата 23.2.2011, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 13
Всего: 109



bilbobagginz, прикольно!
Буду знать, как это делать...

Только подать одну команду PATH на мой взгляд проще.  smile 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Фантом
Дата 23.2.2011, 13:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 10
Всего: 49



Цитата(mihanik @  23.2.2011,  00:29 Найти цитируемый пост)
Ну... А вдруг система команду "wget" найти не сможет?

А вдруг в системе и шелла-то никакого нет?  smile 

Проверять имеет смысл разумные вещи. Если в системе вообще есть wget и она нормально настроена, то он найдется. А если нет - нужно именно это и исправлять, а не вставлять костыли в каждый скрипт (которые, кстати, в такой ситуации скорее всего не сработают).
PM   Вверх
mihanik
Дата 23.2.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 13
Всего: 109



Цитата(Фантом @  23.2.2011,  13:07 Найти цитируемый пост)
Цитата(mihanik @  23.2.2011,  00:29 Найти цитируемый пост)
Ну... А вдруг система команду "wget" найти не сможет?

А вдруг в системе и шелла-то никакого нет?  smile 


Ага... 
Я как-то по крону запустил скрипт с командой

shutdown -r now


Так система не нашла такой команды, пока я PATH в скрипте не прописал...

http://forum.vingrad.ru/forum/topic-306597...+now/index.html

Добавлено через 1 минуту и 47 секунд
Цитата(Фантом @  23.2.2011,  13:07 Найти цитируемый пост)
которые, кстати, в такой ситуации скорее всего не сработают)

сработало уже.
Сегодня скрипт по крону отработал хорошо.



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 23.2.2011, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



во первых, я запихал всё в свой тест, т.к. хотел продемонстрировать как это делается.
Цитата(mihanik @  23.2.2011,  05:14 Найти цитируемый пост)
Только подать одну команду PATH на мой взгляд проще. 

ты размышляешь с т.з. одного сервера в жизни.
подумай что ты будешь делать со своим скриптом когда тебе надо развернуться на 50 серверах, 100, 200.
самое главное - абсолютный путь  = зло. нужное можно вытащить из environment-а.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Фантом
Дата 23.2.2011, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 10
Всего: 49



Цитата(mihanik @  23.2.2011,  13:12 Найти цитируемый пост)
Я как-то по крону запустил скрипт с командой

shutdown -r now

Так система не нашла такой команды, пока я PATH в скрипте не прописал...

Так ведь команды разные. wget - общего назначения, она должна быть доступна всем пользователям, а shutdown - нет. И, кстати, для таких "штучных" случаев проще прописывать конкретный путь к конкретной команде.

Цитата(mihanik @  23.2.2011,  13:12 Найти цитируемый пост)
сработало уже.
Сегодня скрипт по крону отработал хорошо.

Он и так бы сработал. Я про то, что если wget в системе есть, но лежит в каком-то ненормальном месте, то и прописывание PATH, скорее всего, не поможет - нет никаких оснований предполагать, что это ненормальное место удастся случайно вписать в список.
PM   Вверх
IgorIV
Дата 23.2.2011, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: нет
Всего: 8



Цитата(bilbobagginz @  23.2.2011,  14:16 Найти цитируемый пост)
нужное можно вытащить из environment-а.

Что ты под этим подразумеваешь?

А по сути
Код

# Переходим в папку, куда будем скачивать Kaspersky Virus Removal Tool, обновления для антивируса от Microsoft и т.п.
cd /home/sheredfolder/kav-updates/

А кто сказал что эта папка существует? 
А что ты будешь делать если захочешь изменить местоположение этой папки? Она у тебя прописана в явном виде в куче мест.
PM MAIL   Вверх
mihanik
Дата 23.2.2011, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 13
Всего: 109



Из всего прочитанного я понял, что грубых ошибок по-существу у меня нет.

Моя главная ошибка - идеология.

Скрипт правильный, но не верный идеологически.
Что ж...
Попробую исправить его идеологически правильно.
smile



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
nickless
Дата 23.2.2011, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



mihanik, когда меняешь PATH, всегда добавляй, а не заменяй, т.е.
Код

PATH="$PATH:/bla/bla"

А то скрипт не заработает если на системе действительно странные пути, или софт поставлен куда-то не туда.

А вообще ИМХО скриптам не положено заботиться о PATH, его надо прописывать в конфигурации шелла.


Еще одно мелкое замечание, ты качаешь wget-ом веб-сайт и надеешься что файл будет называться index.html, я бы на всякий случай добавил -O some.file или вообще не сохранял бы:
Код

wget http://some.site.com/ -O - | grep bla | sed 's/bla/blub/' ...



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.