sudo: desculpe, você deve ter um tty para rodar o sudo

1

Estou tentando executar este script bash como um cron job, mas estou recebendo um erro que diz %código%. Eu estou executando este script bash em amazon EC2 instância Linux.

#!/bin/bash -
#get instance id - used for putting metric
INSTANCE_ID='GET http://169.254.169.254/latest/meta-data/instance-id'

#could be done using "free" or "vmstat" - use of less and grep is believed to provide widest compatibility - CJ 2011-11-24
memfree='less /proc/meminfo | grep -i MemFree | grep -o [0-9]*'
swaptotal='less /proc/meminfo | grep -i SwapTotal | grep -o [0-9]*'
swapfree='less /proc/meminfo | grep -i SwapFree | grep -o [0-9]*'
swapused=$(($swaptotal-$swapfree))

#mon-put-data to put metrics
mon-put-data --metric-name MemoryFree --namespace EC2/Memory --value $memfree --unit Kilobytes --dimensions "InstanceId=$INSTANCE_ID"
mon-put-data --metric-name SwapUsed --namespace EC2/Memory --value $swapused --unit Kilobytes --dimensions "InstanceId=$INSTANCE_ID"

Por favor, ajude-me a descobrir isso.

    
por Jeevan Dongre 11.01.2012 / 09:05

2 respostas

8

No arquivo de configuração do sudoers, há uma opção - requiretty - que impedirá que você execute o sudo sem ser logado como um usuário real.

see sudoers(5) man page
    
por 11.01.2012 / 09:20
5

A opção "requiretty" pode resolver seu problema.

Por que não instalar o trabalho cron sob o usuário para o qual você está tentando fazer o sudo?

    
por 11.01.2012 / 09:18