Execute comandos usando sudo no servidor remoto após fazer login no PuTTY por meio de arquivo em lote

Execute comandos usando sudo no servidor remoto após fazer login no PuTTY por meio de arquivo em lote

Preciso fazer 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 fazer login no 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.txtcontém:

sudo su - user1 
ls 
cd directory

Apenas o primeiro comando command.txtestá funcionando e 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 mudar para user1sem senha

  • Tenho a restrição de usar apenas o PuTTY (a instalação do Plink não é permitida)

Responder1

Como os comandos contidos no command.txtsão executados poruma concha mestreum por um.

Assim, o shell mestre executa o sudo, espera que ele saia, antes de prosseguir com os outros comandos ( lse cd). E sudonão existe (pelo menos não por si só).

Enquanto você deseja que o lse cdseja executado dentrouma concha infantilexecutado pelo su.

Você tem que dizer supara 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 será encerrado assim que os comandos forem executados.

Então você deseja 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

informação relacionada