Как использовать переменные env .bashr c в crontab? - PullRequest
0 голосов
/ 26 апреля 2020

Мне нужно отправить личную env переменную $FTP111_PASSWD, определенную при моем личном .bashrc crontab исполнении. Как установить переменную окружения в crontab?

Мой оригинальный сценарий оболочки с именем cron4_etc.sh, созданный для выполнения crontab, был:

#!/bin/bash

cd /myFolder/
ftp -n -i <<EOF
open 101.111.111.111
user myUser "$FTP111_PASSWD"
mget check_*.log
bye
EOF

Если я выполнить скрипт через терминал ./cron4_etc.sh, он выполняется нормально, но если я запустил его, используя следующую строку crontab

  */20 *     *   *   *     /home/myUser/cron4_etc.sh > /tmp/cron4.log 2>&1

crontab говорит:

Пароль : Неверный логин. \ NЛогин не удалось.

Я пытался улучшить свой сценарий, используя это предложение , но ошибка сохраняется:

#!/usr/bin/env bash

# set environment
source /home/myUser/.bashrc

cd /tmp/pg_io/PGW
ftp -n -i <<EOF
open 101.111.111.111
user myUser "$FTP111_PASSWD"
mget check_*.log
bye
EOF

PS: я использую Ubuntu 18 LTS, но вопрос для generi c crontab.

1 Ответ

1 голос
/ 05 мая 2020

Мое любимое решение исходит от Аугусто Дестреро , который предоставил ответ на очень похожий вопрос:

Установка переменных в /etc/environment также работал для меня в Ubuntu. Начиная с 12.04, переменные в / etc / environment загружаются для cron.

Некоторые люди предлагают сделать простой env >> /etc/environment, чтобы добавить все переменные вашей среды, но я был бы осторожен с этим и скорее обзор /etc/environment вручную.

...