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?