Ferramentas da API da AWS “Comando não encontrado” ao executar a partir do Cron

3

Eu criei este script bash para gerar um instantâneo do meu volume do EBS

#! /usr/bin/bash
ec2-create-snapshot -d "My Snapshot" vol-XXXXXXX -O <MyKey> -W <MyOtherKey>

E funciona quando eu executo esta linha no terminal, enquanto conectado ao servidor

bash myscript.sh

Então eu criei este crontab

PATH=/bin:/home/usr/bin/bash:/usr/bin/bash
0 * * * * (bash ~/../bash/myscript.sh)

#ALSO TRIED THESE LINES
#0 * * * * ~/../bash/myscript.sh
#0 * * * * (/usr/bin/bash ~/../bash/myscript.sh) 

E recebo esta mensagem no meu email

/home/ec2-user/../bash/myscript.sh: line 4: ec2-create-snapshot: command not found

Estou sem ideias sobre como fazer isso funcionar. O problema parece ser que, quando executado a partir do crontab, o script não está encontrando as ferramentas da API da AWS.

Qualquer ideia seria muito apreciada.

Para maior clareza, aqui está o que acabou funcionando. Obrigado por me apontar na direção certa.

Conecte-se ao servidor, digite echo $EC2_HOME e pressione Enter.

Em seguida, digite echo $JAVA_HOME e pressione Enter.

Em seguida, digite sudo find / -name "ec2-create-snapshot" (este pode retornar vários valores)

Anote os valores que cada um deles retorna. Você vai usá-los em um minuto.

Crie este script bash:

#! /usr/bin/bash
export EC2_HOME=/your/ec2_home/path
export JAVA_HOME=/your/java_home/path

# Create an AWS Snapshot
/path/to/your/ec2-create-snapshot -d "Your Snapshot Description" vol-yourvolid -O YOURPUBLICKEY -W YOURPRIVATEKEY

Você deve ser capaz de executar isso digitando bash yourscriptname.sh no terminal

Em seguida, abra seu cron com contab -e e adicione esta linha:

* * * * * (bash ~/your/dir/yourscriptname.sh) #CREATE AWS Snapshot

Espero que isso ajude alguém.

    
por Chris 30.01.2013 / 18:09

1 resposta

3

Além de especificar o caminho completo para o comando como @ceejayoz diz nos comentários, você também precisará definir EC2_HOME para apontar para o diretório de ferramentas do EC2, e também pode precisar adicionar $ EC2_HOME / bin ao seu PATH para que os arquivos referenciados nos scripts de comando sejam coletados corretamente.

Em vez de especificar um monte de variáveis de ambiente no seu crontab, é mais simples e confiável criar um script de shell que defina o ambiente e chame seu comando e, em seguida, chame o script de seu crontab.

    
por 30.01.2013 / 18:26