Executar comandos usando o sudo no servidor remoto após efetuar login no PuTTY por meio de um arquivo em lote

2

Eu preciso fazer o login no servidor remoto diariamente e executar o mesmo conjunto de tarefas. Estou usando a plataforma Windows e o servidor remoto é Unix. Eu uso o PuTTY para entrar para o servidor remoto. Para reduzir o trabalho manual, preciso automatizar essa tarefa.

Eu tentei este código:

start putty.exe -ssh -load session -l username -pw password -m command.txt -t

O command.txt contém:

sudo su - user1 
ls 
cd directory

Apenas o primeiro comando em command.txt está funcionando e, em seguida, o PuTTY está esperando a entrada do usuário.

Preciso que todos os comandos sejam executados sem a entrada do usuário.

Coisas que importam:

  • Eu não sou usuário root

  • Acesso concedido para alternar para o user1 sem senha

  • Eu tenho uma restrição de usar apenas o PuTTY (a instalação do Plink não é permitido)

por learner1 03.02.2016 / 11:48

1 resposta

2

Porque os comandos que estão contidos no command.txt são executados por um shell mestre um a um.

Assim, o shell mestre executa o sudo , espera que ele saia, antes de continuar com os outros comandos ( ls e cd ). E o sudo não sai (pelo menos não por conta própria).

Enquanto você deseja que ls e cd sejam executados dentro de um shell filho executado pelo su .

Você precisa dizer ao su para executar os comandos.

Isso deve funcionar:

sudo su - -c "ls ; cd directory" user1

ou isto

echo "ls; cd directory" | sudo su - user1

Embora eu espere que você realmente queira continuar trabalhando no shell. Enquanto o acima sairá assim que os comandos forem executados.

Então você quer adicionar um shell à lista de comandos:

sudo su - -c "ls ; cd directory ; /bin/bash" user1

ou

echo "ls ; cd directory ; /bin/bash" | sudo su - user1
    
por 03.02.2016 / 14:22