Como executar o script no servidor remoto após loggin in through ssh

0

Eu estou gerenciando um monte de servidores, então eu freqüentemente tenho que ssh neles. Gostaria de executar automaticamente um script personalizado básico em qualquer servidor remoto após o login. Diga para configurar alguns aliases, cores para o vim, PS1 e outras coisas.

Eu não quero configurar todos os servidores com um script de inicialização, eu quero isso para viver localmente no meu computador e apenas ser executado em qualquer servidor que eu ssh em.

Há perguntas semelhantes mas depois de executar o script ssh efetua logout. Como ficar logado?

Esta resposta está bem próxima , mas o novo bash -l não parece registrar as variáveis de ambiente definidas como: ssh -t user@remote 'export PS1=myps1; bash -l' . Aqui, PS1 não está definido no novo prompt, talvez porque algum .bashrc remoto

Como isso poderia ser possível?

    
por arod 26.07.2018 / 18:03

3 respostas

0

É bem simples:

ssh [email protected] 'bash -s' < local_bash_script.sh

Após a execução do script local_bash_script.sh ssh-session será fechado imediatamente.

Atualizar.

Se você deseja executar algo em um servidor remoto após o login do ssh, basta criar o arquivo ssh rc . Crie o arquivo no servidor remoto rc dentro do diretório .ssh do usuário:

touch ~/.ssh/rc

Abra o arquivo com seu editor de texto favorito, seja nano , por exemplo:

nano ~/.ssh/rc

e copie / cole o conteúdo do arquivo de script:

#/bin/sh

date
whoami
uname -r

exit 0

Toda vez que o login for feito, o script será executado (substitua date , whoami , uname -r pelos seus comandos).

O script ~/.ssh/rc será executado para um usuário definido que seja o proprietário do diretório em que o arquivo rc reside. Se você deseja executar o script rc para todos os usuários no servidor remoto, crie outro arquivo global sshrc :

/etc/ssh/sshrc

Isso é tudo.

    
por 26.07.2018 / 18:11
0

Adicione os comandos necessários no seu ~/.bashrc .

No caso, você verificaria o valor de SSH_CLIENT / SSH_TTY para detectar se você está conectado via ssh.

if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then ... ; fi

Verifique se Como pode Eu detecto se o shell é controlado a partir do SSH? para mais detalhes

    
por 27.07.2018 / 11:06
0

Você pode verificar minha resposta aqui .

Desde que eu estou usando o iTerm2, eu criei:

Você também pode ter um script como ~/test.py

#!/usr/local/bin/python3

print("echo hello world")

E, em seguida, execute este script como um coprocesso no menu iTerm2 Sessão- > Execute o Co-Process e especifique o script como ~/test.py

Eu acho que é necessário tornar seu script executável (embora eu não tenha tentado de outra forma), chmod +x ~/test.py .

Codificação feliz!

    
por 09.08.2018 / 17:17

Tags