executa um script no servidor remoto

2

Estou tentando executar um script no servidor remoto como usuário root. Eu tenho essa linha no meu script de shell.

cat /home/myuser/create_user_updated.sh |   ssh myuser@$myip "sudo sh"

Eu recebo o seguinte erro.

sudo: sorry, you must have a tty to run sudo

O script "create_user_updated.sh" funciona bem se copiar o arquivo para o servidor remoto e executá-lo lá localmente. Mas isso não funciona no servidor remoto.

    
por shantanuo 12.10.2011 / 06:41

2 respostas

8

Você tem duas opções:

  1. Você pode desativar os requisitos tty pelo sudo: execute visudo e remova a opção "requiretty" globalmente se estiver definida ou por usuário:

    Defaults:username !requiretty

  2. Você pode forçar o ssh a alocar pseudo-tty:

    ssh -t -t myuser@$myip "sudo sh"

    Observe as opções double -t, ambas são necessárias. Além disso, você precisa adicionar exit como última linha do seu script create_user_updated.sh . Caso contrário, a sessão do ssh pode não terminar corretamente (devido à criação pseudo-tty forçada).

Por favor use a opção # 2 somente se você não tiver direitos de root na máquina de destino e não puder alterar a configuração do sudo. # 1 é uma solução muito mais limpa. Na minha opinião, impor tty via sudo faz muito pouco do ponto de vista de segurança.

    
por 12.10.2011 / 06:52
0

Use visudo para editar o arquivo /etc/sudoers e insira a linha abaixo:

Defaults:myuser !requiretty
    
por 12.10.2011 / 06:46

Tags