Comecei a fazer essa pergunta, mas respondi enquanto a estava aberta. Vou postar esta pergunta, acompanhar a minha solução e deixá-la aberta para outras soluções em potencial.
<
história de fundo>
Eu sou um usuário tmux e vim. Eu gosto do trabalho com o vim remoto, pois não preciso me preocupar com as máquinas de desenvolvimento do Ubuntu que surgem quando um filme em flash me dá um pânico no kernel. Executar o tmux significa que os arquivos abertos estão esperando por mim após a reinicialização e posso continuar de onde parei. Eu tive problemas com o vim executando em uma sessão tmux quando me conecto da seguinte forma:
ssh example.com -t 'tmux attach'
Surgem problemas de UTF-8 que não surgem quando se descascam normalmente e apenas se conectam manualmente a uma sessão do tmux.
<
/ história de fundo>
Então, eu quero um método reutilizável de iniciar algo no login ssh, que não afete nenhuma das outras coisas que configurei no meu .zshrc
(ou no seu, .bashrc
se você ainda usa o bash) que pode ser necessário para o meu ambiente de desenvolvimento, que não afeta aparece quando ocasionalmente estou trabalhando localmente na mesma máquina.
fonte
ssh example.com -t 'tmux attach'
é porque há problemas ao carregar meu ambiente, mas porque tive problemas com a exibição de caracteres UTF-8; esse problema não existe ao conectar da maneira convencional. É por isso que esta pergunta é sobre a execução de scripts imediatamente após a conexão pelo SSH..profile
? Presumi que o problema ocorreu devido à definição incorreta de localidades na máquina de destino, que você/etc/profile
ou.profile
corrigiu. O problema da localidade provavelmente é corrigível com mais informações.Eu previamente recomendadas configuração
PermitUserEnvironment yes
e adicionar uma variável de ambiente em sua~/.ssh/environment
até computador Eli Heady entrasse com uma sugestão melhor nos comentários abaixo.Abra seu
.zlogin
(bash:.bash_profile
etc.) e coloque o seguinte:Inspiração retirada de: Como solicitar entrada em um script de shell do Linux?
Observe que eu usei o
.zlogin
arquivo, mas você pode usá-lo,.zshrc
mas eu gosto de manter meus arquivos de ponto organizados e o separa para que eu possa usá-lo em outras máquinas.Substitua a pergunta por algo apropriado para si e substitua
MY_SSH_CONNECTION="yes" tmux attach
pelo que você deseja executar nesse momento.Observe como o script é configurado
MY_SSH_CONNECTION="yes"
antestmux attach
para transmiti-lo ao tmux, pois também abrirá um shell que acessará o mesmo script acima e evitará qualquer recursão.fonte
if [[ "$SSH_CONNECTION" != "" ]]
deveria fazê-lo.Eu mesmo, adiciono isso aos meus arquivos .bash_profile:
Isso me dá algum tempo para interromper a reconexão ou criação de uma sessão de tela. Ele não funciona nos formatos 'ssh system command' (que não chama o perfil ~ /.*). Uma função shell é configurada para reconectar se eu abortar.
fonte
Você pode considerar correr
e execute sua sessão de terminal lá. Você pode desanexar (
^A^D
) e reconectar posteriormente (de um cliente diferente). Isso fará com que o problema com a inicialização não interativa desapareça, pois a tela mantém sessões de terminal interativas completas (opcionalmente também shells de logon,man screen
(1) ou^A?
)fonte
-t 'tmux attach'
, tenho problemas com o vim que não estão presentes normalmente. É por isso que a verdadeira questão é sobre a execução de scripts no ssh connect, em vez do gerenciamento de tela / sessão. Desculpas para não ser mais claro na minha perguntaPara falar especificamente sobre os problemas UTF-8, se você adicionar
E
$LANG
está definido para algo comoen_US.UTF-8
na extremidade local e seu sshd na extremidade remota permite aSendEnv
diretiva (comAcceptEnv
insshd_config
), o tmux na outra extremidade deve respeitá-la. Eu tive esse problema por um tempo e foi difícil solucioná-lo.fonte
Se você deseja que ele seja executado sempre que se conectar, você pode simplesmente adicionar
tmux attach
à parte inferior da sua~/.profile
máquina remota.fonte