“stdin: n'est pas un tty” de tâche cron

Je reçois le mail suivant à chaque fois que j'execute un spécifique de la tâche cron. Le script appelé fonctionne très bien lorsque je suis en l'appelant directement et même à partir de cron. Si j'obtiens le message n'est pas une erreur, car le script est exactement ce qu'il est censé faire.

Ici, c'est le cron.d entrée:

* *     * * *     root   /bin/bash -l -c "/opt/get.sh > /tmp/file"

et la get.sh le script lui-même:

#!/bin/sh

#group and url
groups="foo"

url="https://somehost.test/get.php?groups=${groups}"

# encryption
pass='bar'
method='aes-256-xts'
pass=$(echo -n $pass | xxd -ps | sed 's/[[:xdigit:]]\{2\}/&/g')

encrypted=$(wget -qO- ${url})
decoded=$(echo -n $encrypted | awk -F '#' '{print $1}')
iv=$(echo $encrypted | awk -F '#' '{print $2}' |base64 --decode | xxd -ps | sed 's/[[:xdigit:]]\{2\}/&/g')

# base64 decode input and save to file
output=$(echo -n $decoded | base64 --decode | openssl enc -${method} -d -nosalt -nopad -K ${pass} -iv ${iv})

if [ ! -z "${output}" ]; then
        echo "${output}"
else
        echo "Error while getting information"
fi

Quand je ne suis pas à l'aide de la bash -l syntaxe du script se bloque lors de l'wget processus. Donc j'imagine que ça a quelque chose à voir avec wget et de mettre la sortie vers stdout. Mais je n'ai aucune idée de comment le résoudre.

Utilisez-vous un proxy?
Oui j'utilise un proxy est défini par la variable http_proxy.
Oh, attendez, je pense que nous sommes se rendre quelque part ici. Je définir le proxy par le biais d'un fichier dans /etc/profile.d Qui est inclus dans le fichier /etc/profile. Peut-être que ce n'est tout simplement pas disponible lors d'une "normale" tâche cron appel?
Assurez-vous que la variable est défini lors de votre bash (utilisateur root) n'est shell de connexion.

OriginalL'auteur Kai | 2014-10-02