2012-02-20 4 views
0

Это Шрикант из Хайдарабада.Cronjob полностью не выполняет скрипт Shell

Я Администратор Linux в одной из корпоративных компаний. У нас есть сервер squid, поэтому я подготовил сервер Squid Backup, так что, когда сервер LIVE Squid падает, я могу перевести сервер резервного копирования в LIVE.

Мои серверы squid сконфигурированы с Centos 5.5. Я подготовил сценарий для резервного копирования всех файлов конфигурации в/etc/squid/сервера LIVE на резервный сервер. т.е. он скопирует все файлы с сервера/etc/squid/сервера резервного сервера сервера/etc/squid/

Вот скрипт, сохраненный как squidbackup.sh в каталоге/opt/с разрешением 755 (rwxr-xr-x)

#! /bin/sh 
username="<username>" 
password="<password>" 
host="Server IP" 

expect -c " 
spawn /usr/bin/scp -r <username>@Server IP:/etc/squid /etc/ 
expect { 
     "*password:*"{ 
     send $password\r; 
     interact; 
        } 
    eof{ 
    exit 
     } 
} 

** Пожалуйста, обратите внимание, что это будет осуществляться в резервном сервере, который будет проверять для пользователя, который упоминается в сценарии. Я создал пользователя в реальном сервере и дал то же самое в скрипте.

Когда я выполнить эту команду, используя следующую команду

[[email protected] ~]# sh /opt/squidbackup.sh 

Все отлично до сих пор работает, этот скрипт загружает все файлы из каталога/и т.д./кальмара/РЕАЛЬНОГО сервера для определения местоположения/и т.д./кальмара/сервер резервного копирования

Теперь проблема возникает, если я установить это в кронтабе, как показано ниже, или с другими таймингами

50 23 * * * sh /opt/squidbackup.sh 

не знаю, что это неправильно, это п ot загрузка всех файлов. i.e Cronjob загружает только несколько файлов из/etc/squid/LIVE-сервера в/etc/squid/резервного сервера.

** Только несколько файлов загружаются, когда cron выполняет сценарий. Если я запускаю этот скрипт вручную, он загружает все файлы с любыми ошибками или предупреждениями.

Если у вас есть еще вопросы, просьба опубликовать его.

Теперь я любезно прошу предоставить, если имеются какие-либо решения.

Просьба, пожалуйста, заранее.


спасибо за ваш интерес. Я попробовал то, что вы сказали, это показано, как показано ниже, но ранее я использовал для получения того же вывода на почту пользователя на сервере резервного Squid.

Даже в журналах cron это показывает то же самое, но я не мог понять, что было точной ошибкой из приведенных ниже строк.

Обратите внимание, что с помощью cron загружается только несколько файлов.

spawn /usr/bin/scp -r <username>@ServerIP:/etc/squid /etc/ 
<username>@ServerIP's password: 

Просьба проверить, можете ли вы предложить что-нибудь еще.

+0

что делает электронная почта от cronjob сказать? – Flexo

+0

У вас есть имя пользователя и пароль в виде открытого текста в читаемом мире скрипте. Это действительно плохая идея. Вы должны настроить пароль ssh; создайте общедоступные и закрытые ключи в каталоге '$ HOME/.ssh' для учетной записи, которая выполняет скрипт, и настройте' $ HOME/.ssh/authorized_keys' на удаленной системе. Проще всего настроить закрытый ключ без кодовой фразы, что означает, что файл закрытого ключа * должен быть сохранен в безопасности. (Должно быть возможно настроить закрытый ключ с парольной фразой, и пусть задание cron использует 'ssh-agent', но это немного усложняется). –

ответ

1
  1. Сначала попробуйте простые варианты. Захватите stdout и stderr, как показано ниже. Эти файлы должны указывать на проблему.

  2. Рассматривая сценарий, вам необходимо указать местоположение ожидания. Это может быть проблемой.

 
50 23 * * * sh /opt/squidbackup.sh >/tmp/cronout.log 2>&1 
Смежные вопросы