
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.txt
contém:
sudo su - user1
ls
cd directory
Apenas o primeiro comando command.txt
está 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
user1
sem senhaTenho a restrição de usar apenas o PuTTY (a instalação do Plink não é permitida)
Responder1
Como os comandos contidos no command.txt
sã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 ( ls
e cd
). E sudo
não existe (pelo menos não por si só).
Enquanto você deseja que o ls
e cd
seja executado dentrouma concha infantilexecutado pelo su
.
Você tem que dizer 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 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