Cron не работает по ssh

ssh по cron

всем приветик ) подскажите плиз как сделать так , что бы из крона срабатывал bash скрипт в исполняемом файле backup.sh?

#bin/sh ssh user@server «mysqldump -u$user -p$password $dbname —lock-all-tables —quick | gzip -c» | gzip -d > db.sql

в итоге на локальном диске создаётся файл пустого дампа БД ! может переменные окружения ещё какие не совпадают с ssh и cron . через терминал норм отрабатывает ./backup.ah ,а через cron не работает.

может тут прочёл так вот запускать в кроне надо ? * * * * * $ -l -c backup.sh

Можно же посмотреть все переменные, запустив env из под крона и руками.
К серверу хотя бы коннект есть из крона, или с авторизацией по ключам облом происходит?

а как это сделать ? запустить env я вообще не работал с переменными окружения !

набери в консоли env и смотри.
или проблема с запуском в кроне? там надо будет перенаправить вывод env в файл и дождаться срабатывания.
0 * * * * env > /tmp/environment.txt
и в начале следующего часа прочитаешь всё в файле

А тебя не учили в системных скриптах полные пути писать?

PS: еще иногда есть такие директории, как /etc/cron.daily

PPS: еще советую подумать от какого пользователя запускается этот ssh.

поставь переменные в скипте как надо.

а crontab прописывай командой

от того же юзера, что запускать должен.

ну и полные пути пиши, если $PATH не ставишь

и пустую строку в конце

#!/bin/bash if [ ! -d $dirbackup ] then echo «Directory for store backup of database not existing. Starting creating. » mkdir -p $dirbackup echo «Directory» $dirbackup «created successfully» fi ssh morgusha@morgusha.ru mysqldump -u$user -p$password $dbname —quick > $dirbackup/morgusha.sql echo «Backup of database» $dbname «is finished»

где тут прописать полные пути . или переменную path .

где тут прописать полные пути . или переменную path .

crontab -e там прописал:

51 10 * * * $ -I -c /home/metko/backup.sh

опять пустой файл появился и всё (

в etc /environment так вот прописано:

опять пустой файл появился и всё

А добавили опцию к параметрам ssh, что предложил вам сэр sdio ?
Она даёт возможность ссх отработать без юзершелла.

так вот в крон записал : 3 1 * * * /home/metko/backup.sh >> /home/metko/cron.log 2>&1 В логе такое вот появилось: Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). Backup of database morgusha is finished

Читайте также:  Astra linux автозагрузка приложений

да добавилв скрипте ключ -t вот что в логе:

Pseudo-terminal will not be allocated because stdin is not a terminal. Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). Backup of database morgusha is finished

У тебя ssh по ключу заходит, и ключ, видимо, не доступен.

О БОЖЕ ! ( ничего не понимаю ! вот код скрипта! #!/bin/bash SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

dbname=«morgu» # Имя базы данных user=«morga» # Пользователь mysql password=«eph3» # Пароль пользователя mysql dirbackup=«/home/metko/backup-db» # Каталог назначения на локальной машине if [ ! -d $dirbackup ] then echo «Directory for store backup of database not existing. Starting creating. » mkdir -p $dirbackup echo «Directory» $dirbackup «created successfully» fi

ssh -t morgusha@morgusha.ru mysqldump -u$user -p$password $dbname —quick > $dirbackup/morgusha.sql

echo «Backup of database» $dbname «is finished»

если ты запускаешь script вручную, ты ведь не вводишь пароль сервера (юзера morgusha на сервере morgusha.ru)?

Используй теги
[code]

иначе невозможно читать кашу твоих сообщений

Да не ввоже у меня по rsa ключам атентификация настроена !

Я тебе это и сказал. На ключах пароль есть или нет? Сеансовый ssh-agent может предоставлять тебе уже распароленный rsa-key, который не доступен из под cron’a

Да, есть пароль на ключах ! Как же сделать так что бы крон делал коyнект к ssh ?

и так тоже не выходит (

я вообще ничего не понимаю ( если ставлю sudo то не знает команду eval

нельзя сделать аутентификацию просто по паролю в скрипте .

Сделай уж сразу ключи без пароля и не морочь людям голову.

ну подумай чуть-чуть. Если cron не root’овый, а юзерский, то не надо класть скрипт add-ssh-pass в /root

нельзя сделать аутентификацию просто по паролю в скрипте .

пароль — такая штука, которая подтверждает, что ТЫ за компьютером. Используй ssh-keygen для генерации нового ключа БЕЗ пароля.

переменные прописывай в самом скрипте так

оооо у меня итак рса ключ сделан без парольной фразы !

поправьте плиз что тут не так. или аську дайте хоть кто плиз ,а то тут эпопея расстянуться может (

/.ssh/example_rsa ssh morgusha@morgusha.ru

Это у тебя только тут два раза ssh или в реальном скрипте тоже?

Аааааааааа СПАСИБО! ПОБЕДА ) Дамп создался номально вроде ! Вот такой вот код скрипта!

А может кто сталкивался с такой же задачей делать бэкапы на серверах и скажет по какому пути правильней идти будет ? А вообще теперь мне надо для каждого сервера делать отдельный rsa ключ и потом просто в скрипте после одного бэкапа делать разрыв связи и устанавливать новое соединение используя другой ключ и делать там бэкап, так будет верно ?

тут СВОЁ имя писать надо, а НЕ username.

смени пароль! И не публикуй его больше.

echo «Backup of database» $dbname «is finished»

а так вроде всё верно.

А может кто сталкивался с такой же задачей делать бэкапы на серверах и скажет по какому пути правильней идти будет ?

всё ты правильно делаешь.

А вообще теперь мне надо для каждого сервера делать отдельный rsa ключ

можно один ключ на все сервера делать. Это сам думай как оно лучше.

просто в скрипте после одного бэкапа делать разрыв связи

он сам делается. Ещё код ошибки надо проверять, он ==0 если ОК.

устанавливать новое соединение используя другой ключ

/.ssh/config, и там задай имена и ключи для всех своих серверов. В скрипте этого не нужно делать, там только имя надо.

Читайте также:  Wordpress хуки для плагинов

Кроме того желательно и имя/пароль к базе тоже хранить возле этой базы (всё равно, если сломают тот сервер, то базу всё равно сольют), а локально надо просто скрипт на том сервере запускать, например так:

ох по поводу безопасности пока не задумывался вопрос и без того валом ( Спасибо всё равно за напутствие ! Подскажите как нужно подключаться через ssh к БД и делать к ней селект ? есть просто пример синтаксиса команд и как подключиться к интерпритатору sql команд ?

Что это за артифакт? Проверь, не появился ли какой файл посторонний. Ну и почту root проверь — ошибки по-умолчанию ему мылятся.

какой ещё артефакт ? делаю в скрипте так вот :

к удалённой СУБД по ссш? А зачем? Для репликации mysql я использовал ssl/tls (сертификат можно и самому подписать, ведь подключаться будут только ваши сервера)

ну а запросы может и локальный код обработать. Или у вас там всё так серьёзно, что логику сервера вы на отдельную железку уже выносите, а СУБД на другую? Тогда извините, я не в курсе.

Что это за артифакт? Проверь, не появился ли какой файл посторонний. Ну и почту root проверь — ошибки по-умолчанию ему мылятся.

какой артефакт? Всё правильно, ключ —to-stdout используется для ввода архива на stdout. Единственное неправильно то, что ssh само умеет сжимать

-C Requests compression of all data (including stdin, stdout, stderr, and data for forwarded X11 and TCP connections). The compression algorithm is the same used by gzip(1), and the «level» can be controlled by the CompressionLevel option for protocol version 1. Compression is desirable on modem lines and other slow connections, but will only slow down things on fast networks. The default value can be set on a host-by-host basis in the configuration files; see the Compression option.

конечно надо проверить, что сервер тоже поддерживает компрессию (gnu sshd давно умеет, но я не помню, включено-ли оно по дефолту)

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

[Решено] scp и crontab (с авторизацией по ключу)

[Решено] scp и crontab

Сообщение sptica » 31.05.2010 16:51

Пытаюсь заставить копировать информацию по ssh с помощью команды scp из crontab. Не работает. Уже обрылся в гугле и не знаю в какую сторону думать. Из консоли работает, из кронтаба — нет. Сама команда:

Читайте также:  Лазерный принтер hp laserjet 1005 характеристики

Получается, что у scp почему-то не получается авторизоваться. Ключ для доступа по ssh сгенерирован без пароля, пути абсолютные. Посмотрел «env | grep -i ssh» — ничего дельного не нашел, значит дело не в переменных окружения.

Люди добрые, подскажите пожалуйста в какую сторону рыть.

Re: [Решено] scp и crontab

Сообщение t.t » 31.05.2010 17:16

Re: [Решено] scp и crontab

Сообщение sptica » 31.05.2010 17:19

Re: [Решено] scp и crontab

Сообщение t.t » 31.05.2010 17:24

Re: [Решено] scp и crontab

Сообщение sptica » 31.05.2010 17:36

На время не смотрите, оно на этом сервере немного отстает . 192.168.153.37 — это мой айпи, тот на который я и пытаюсь скопировать.

Да, на том сервере alt linux, если что.

Re: [Решено] scp и crontab

Re: [Решено] scp и crontab

Сообщение sptica » 31.05.2010 18:04

Re: [Решено] scp и crontab

Re: [Решено] scp и crontab

Сообщение t.t » 31.05.2010 19:02

Re: [Решено] scp и crontab

Сообщение t.t » 31.05.2010 19:10

В ручном режиме логин точно по ключу происходит?

Если так, нужно проверять, имеет ли кроновская задача доступ к ключам. Например, так для начала:

Re: [Решено] scp и crontab

Сообщение sash-kan » 31.05.2010 19:27

/.ssh
и смотреть, что через минуту придёт на почту.

Re: [Решено] scp и crontab

Сообщение t.t » 31.05.2010 19:48

/.ssh
и смотреть, что через минуту придёт на почту.

Re: [Решено] scp и crontab

Сообщение sash-kan » 31.05.2010 22:27

Re: [Решено] scp и crontab

Сообщение t.t » 01.06.2010 07:51

$ sleep 60 && mail No mail for tt tt:

$ sleep 60 && mail No mail for tt

Re: [Решено] scp и crontab

Сообщение sash-kan » 01.06.2010 10:28

Re: [Решено] scp и crontab

Сообщение sptica » 01.06.2010 10:49

Спасибо огромное за попытки помочь .

Добавил в крон «* * * * * ls -l

Решил, что я где-то что-то не так сделал при создании ключей. Пересоздал их по «ssh-keygen -t rsa», затем скопировал на сервер «ssh-copy-id -i

/.ssh/id_rsa.pub 192.168.153.130″. Попробовал залезть на сервер «ssh 192.168.153.130» — работает, попробовал скопировать по scp — работает. В кроне опять не работает и выводит:

Re: [Решено] scp и crontab

Сообщение t.t » 01.06.2010 11:06

Re: [Решено] scp и crontab

Сообщение t.t » 01.06.2010 11:13

Re: [Решено] scp и crontab

Сообщение sash-kan » 01.06.2010 11:38

Re: [Решено] scp и crontab

Сообщение sptica » 01.06.2010 12:06

Вы оказались правы, дело в наличии ключа. При этом из консоли он ходил при наличии только публичного ключа какое-то время. Сейчас не ходит. Так вот и сходят с ума, я же прекрасно помню, что заходил на сервер при наличии только id_rsa.pub в директории с ключами .

В очередной раз спасибо за помощь и терпение .

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector