plink
é executável do Windows, que se conecta por ssh e executa algum comando no lado do servidor.
Por exemplo
plink myname@mycomputer ls
mostrará o resultado do comando ls, sendo executado no diretório inicial de myname.
Infelizmente, nem ~/.profile
nem ~/.bashrc
é executado.
O que é contrato para ssh
conexão e o que define, quais variáveis são definidas e quais não são? se eu correr
plink myname@mycomputer env
Vejo algumas variáveis como HOME
, PWD
e LOGNAME
que são específicas do usuário. Como definir outros?
Nenhum dos seguintes ajudou:
plink myname@mycomputer sh -c env
plink myname@mycomputer bash -c env
Esses comandos funcionaram, mas mostraram um conjunto "nu" de variáveis.
Como dizer ao shell para executar seus scripts iniciais para o usuário?
Quais
ssh
execuções podem ser observadas, por exemplosysdig
, em um terminal e depois em outro lugar em execução , oplink myname@mycomputer uptime
que deve mostrar algo comoportanto, neste caso,
bash
está sendo executado (pode não ser o caso, por exemplo, no Alpine Linux, que não é instaladobash
por padrão) com os-c uptime
argumentos. Isso causabash
mais ou menos diretamenteexec
esse comando, pois não há pipeline sofisticado ou vários comandos de shell que exigem quebash
continuem em execução.Em seguida, podemos registrar quais arquivos são
bash
abertos e executar novamente oplink ... uptime
comando (isso pode ser mais detalhado, dependendo do que mais está acontecendo no sistema):Portanto, parece que
/root/.bashrc
aqui está sendo lido no meu teste virt; para confirmar isso, podemos adicionar algo a esse arquivo e executar novamente nosso comando de teste, no servidor:e depois conectamos novamente (ajuste o comando para ficar
plink ...
conforme necessário)então, neste caso ,
.bashrc
está sendo lido, então você pode colocar comandos lá. Não sei por que no seu caso.bashrc
não está sendo lido; rastrear coisas para ver o que está acontecendo.