sudo: извините, у вас должен быть tty для запуска sudo

Я пытаюсь запустить этот скрипт как задание cron, но получаю сообщение об ошибке sudo: sorry, you must have a tty to run sudo, Я запускаю этот скрипт в экземпляре Amazon EC2 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"

Пожалуйста, помогите мне разобраться в этом.

2 ответа

Решение

В конфигурационном файле sudoers есть опция - requiretty - которая не позволит вам запускать sudo без регистрации в качестве реального пользователя.

see sudoers(5) man page

Опция requiretty может решить вашу проблему.

Почему бы просто не установить задание cron под пользователем, которому вы пытаетесь выполнить sudo?

Другие вопросы по тегам