O 'root' no / etc / sudoers deve ser o ID do usuário executando os comandos .... No seu exemplo, isso seria 'ubuntu' eu acredito.
Seu exemplo faz isso:
- efetua login em $ machine como root (suponho que você tenha configurado essa máquina para poder fazer logon como root. Se não, você precisa ajustar as configurações de pam.d para permitir logins de raiz via ssh. Isso não tem nada a faça com sudo).
- Como root @ # machine, seu comando ssh's para ubuntu @ address e executa o comando 'sudo service cassandra start'.
Parece pelo seu exemplo que você precisa habilitar o sudo para o ubuntu e não o root para poder executar comandos de serviço.
Exemplo:
# User privilege specification
ubuntu ALL=(root) NOPASSWD: /usr/bin/service cassandra *
EDIT: Eu estou realmente confuso sobre o que você está tentando realizar. Se você está simplesmente tentando ssh para outro servidor e executar esse comando de serviço, tudo o que é necessário é isso em seu script de shell:
Seu comando ficaria assim:
sshpass -p 'ubuntu' ssh -t ubuntu@$address -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nul -x 'sudo service cassandra start'
Além disso, você ainda precisa adicionar minhas edições ao / etc / sudoers acima para permitir que o 'ubuntu' execute esse comando.