Ivanovo Linux Users Group -  
Форум Помощь Поиск Вход
Предыдущая Следующая Вверх Тема Администрирование / Общее администрирование / Вопрос к гуру shell-скриптов (15263 хитов)
- Написал(а) Dmitriy Suslov Дата 07.05.08 08:33
Всем привет!

Есть необходимость делать бэкапы MySQL базы данных. Дабы не городить огород, написал скрипт такого содержания:


mysqldump --user=some_user --password=some_password --extended-insert --add-drop-table database_name | bzip2 > /home/_backups/database_name__`date +%Y-%m-%d__%H-%M-%S`.sql.bz2


и поместил его в /etc/cron.daily

Все было хорошо, но потом в силу определенных причин возникла необходимость шифровать эти бэкапы. Опять же поступил просто: создал пару ключей в gpg и изменил скрипт вот так:


mysqldump --user=some_user --password=some_password --extended-insert --add-drop-table database_name | gpg -e -r "My Key ID" > /home/_backups/database_name__`date +%Y-%m-%d__%H-%M-%S`.sql.gpg


И вот парадокс: когда я запускаю его вручную - все хорошо, файл создается. Но когда этот скрипт запускается автоматически - возникает ошибка - он не может найти gpg-ключ с указанным идентификатором!
Т.к. опыта написания shell-скриптов у меня почти никакого, трудно понять почему так происходит. Единственное, что могу предположить, так это то, что при запуске по cron'у переменные окружения другие...
Parent Написал(а) Bercut Дата 07.05.08 11:22
естесно другие
но не все
под кем запускаеш скрипт вручную ?

в начале скрипта добавь в пути путь к ключам
и может еще к чему нибудь
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Parent - Написал(а) LOE (Site/forum admin) Дата 07.05.08 11:48
Через опцию --homedir /home/пользователь/.gnupg укажи каталог, где хранятся файлы с ключами нужного пользователя.
Если файл ключей с паролем (при запуске из командной строки предлагает ввести пароль?), то ищи опцию указания пароля через параметр.

PS. впредь, по возможности, цитируй сообщение об ошибке.
STDERR можно перенаправить в файл:  cool_proga > std_out_file 2> stderr_out_file
хотя крон stderr направляет почтой пользователю.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) Bercut Дата 07.05.08 14:20
вот именно это я и хотел
добавить про логи
и все такое
мол в студию а мы подивимся
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Parent - Написал(а) Dmitriy Suslov Дата 07.05.08 18:36
Извольте:


Message 1:
From root@localhost.localdomain  Wed May  7 13:01:04 2008
Date: Wed, 7 May 2008 13:01:04 +0400
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@web> run-parts /etc/cron.hourly
Content-Type: text/plain; charset=ANSI_X3.4-1968
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <MAILTO=root>
X-Cron-Env: <HOME=/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/etc/cron.daily/backup_script:

gpg: My Key ID: skipped: public key not found
gpg: [stdin]: encryption failed: public key not found
mysqldump: Got errno 32 on write


P.S. Вручную скрипт запускаю от root'а
Parent - Написал(а) LOE (Site/forum admin) Дата 07.05.08 19:22
При запуске из крона, переменная HOME выставляется в другое значение (должно быть /root).
Как было указано, укажи параметром к gpg каталог с ключами.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) Dmitriy Suslov Дата 09.05.08 06:39
Точно! Все правильно! Достаточно всего лишь было прописать в начале скрипта HOME="/root" и все пошло!

СПАСИБО ВСЕМ ОТКЛИКНУВШИМСЯ!
Parent Написал(а) Bercut Дата 14.05.08 08:33
пажаласта
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Parent - Написал(а) cutter Дата 08.05.08 06:38
Еще можно попробовать запускать gpg через sudo, от имени того пользователя, ключами которого будет шифроваться:
sudo -u username gpg ...

А на секретный ключ gpg, которым шифруется, пароля не стоит?
Parent Написал(а) Bercut Дата 08.05.08 06:42
тоже конечно мысль
но это имхо не элегантно както
размазывание мелкой задачи по всем просторам никсов

эдак и до чрута можно достукаться

получается скрипт не переносимый, это как минимум
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Предыдущая Следующая Вверх Тема Администрирование / Общее администрирование / Вопрос к гуру shell-скриптов (15263 хитов)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.081s with 10 database queries.