Как получить результат выполнения Sftp с помощью оболочки php exec из crontab?

0

Когда я выполняю сценарий с терминала, он выводит результат sftp.
Если скрипт php выполняется из cron, он ничего не печатает, $ result пуст.

Crontab:

23 12 * * *  php script.php >> /tmp/logs.log

Сценарий:

<?php
$command = 'lftp -u user,Password sftp://domain.com -e "set ftp:passive-mode off; set ftp:auto-passive-mode on; put -O /path/tests toTransfer/file.zip; bye;"';
$result = shell_exec($command);
echo $result;
if ($result) echo "uploaded";
else echo "Not uploaded";
?>
  • 0
    Где вы ожидаете, что вывод будет отражен? По умолчанию выходные данные задания cron отправляются по электронной почте на учетную запись, запускающую демон cron - подробности см. В man cron .
  • 0
    Я хочу получить результат выполнения, чтобы узнать, успешно ли загружен файл.
Теги:
shell-exec
sftp
crontab

1 ответ

0

Я предполагаю, что cron работает под другой учетной записью, чем тот, который вы используете в оболочке.

Вероятно, ваш сценарий зависит от среды вашего аккаунта (например, файла с известными ключами хоста). У учетной записи cron этого нет, поэтому lftp терпит неудачу.

Вероятно, lftp печатает некоторую ошибку на выходе ошибки. Но вы собираете только стандартный вывод.

Попробуйте начать с простого сценария оболочки и перенаправить как stdout, так и stderr в файл журнала:

lftp -u user,Password sftp://domain.com 2>&1 > /tmp/log.log

Обратите внимание, что вы используете SFTP. Поэтому нет смысла устанавливать FTP-специфичные опции lftp, такие как ftp:passive-mode (там нет пассивного режима в SFTP).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню