eu estraguei tudo, sair em .bashrc

25

Eu coloquei "exit" no meu arquivo .bashrc. Eu não tenho acesso físico à máquina para me conectar a ela. Eu uso o ssh. Eu não tenho privilégios de root. Toda vez que eu me conecto ao servidor, a conexão é fechada automaticamente.

Até agora, eu tentei:

  • Sobrescrevendo .bashrc com scp e sftp. A conexão fecha antes de eu pode fazer qualquer coisa.
  • Usando alguns programas GUI diferentes para acessar o ssh (conexão fecha)
  • Substituir o arquivo por ftp. (não pode usar ftp)
  • Do meu computador doméstico
    • $ ssh host "bash --noprofile --norc" (conexão fecha)
    • $ ssh host "mv .bashrc bashrc_temp" (conexão fecha)
    • $ ssh host "rm .bashrc" (mesma coisa)
    • $ ssh host -t (conexão fecha)

Existe algo que eu possa fazer para desativar o .bashrc ou talvez sobrescrever o arquivo antes que o .bashrc seja originado?

UPDATE

@ ring0

Eu tentei sua sugestão, mas sem sorte. O arquivo bashrc ainda é executado primeiro.

Outra coisa que tentei foi fazer o login com outra conta e o sudo editando o .bashrc, mas não tenho privilégios sudo nesta conta.

Acho que entrarei em contato com o administrador.

EDITAR

@shellholic

Eu não posso acreditar, mas essa abordagem funcionou! Mesmo que "exit" ocorra dentro das primeiras linhas (composto apenas por alguns blocos if e instruções export ) no arquivo .bashrc, eu ainda consegui Ctrl-c interrompê-lo com sucesso dentro de vinte tentativas (demorou cerca de 3 minutos). Eu removi a linha ofensiva no .bashrc e tudo está em ordem novamente.

    
por camel_space 27.11.2010 / 09:52

10 respostas

36

você pode tentar abortar (ctrl + C) antes que a parte de saída do seu .bashrc seja executada.

Eu tentei adicionar o seguinte na parte superior do bashrc de um testador, funciona, é apenas uma questão de tempo. Muito fácil no meu caso:

sleep 3
echo "Too late... bye"
exit 0
    
por 27.11.2010 / 20:16
11

Também consegui atrapalhar meu arquivo .bashrc em um novo cluster ao qual recebi acesso de teste. Não querendo parecer um noob, a última coisa que eu queria fazer era pedir ajuda aos admins, e eu não consegui um + + C bem cronometrado para funcionar.
O que funcionou no entanto, foi enviar um comando 'rm' como um argumento final para o ssh. ou seja,

ssh -tv user@host rm .bashrc

Eu não consegui usar um comando 'mv' para funcionar (tentei antes sem -t), então acho que a opção -t deve ter feito isso, mas você pode testar isso se quiser. Eu agora recuperei do arquivo .bashrc ~ (feito pelo vim) tudo, menos a linha duvidosa em questão e tudo está certo no mundo! = D

    
por 08.04.2011 / 13:56
3

Se você puder fazer login como um usuário diferente, tente isto:

su user -s /bin/sh

Você precisará da sua senha, é claro.

    
por 27.11.2010 / 17:36
3

Se me lembro de algumas experiências ruins que tive assim, o ssh, scp, sftp parece executar os arquivos de inicialização.

Minha sugestão é usar FTP simples e, em seguida, excluir ou renomear arquivos com arquivos inválidos na linha de comando do FTP após o login. Suponho que o seu sistema permitirá o acesso FTP. Nesse caso, certifique-se de alterar sua senha (com segurança) quando terminar o reparo.

    
por 28.11.2010 / 02:32
1

De man ssh (pelo menos OpenSSH_5.6p1 , não tenho certeza quando foi adicionado),

~/.ssh/rc
        Commands in this file are executed by ssh when the user logs in, just
        before the user's shell (or command) is started.  See the sshd(8) manual
        page for more information.

.. o que significa que você pode criar ~/.ssh/rc contendo o seguinte:

mv ~/.bashrc ~/bak.bashrc

Então, quando você ssh in, o bashrc problemático será movido para fora, antes que seu shell de login seja iniciado - você pode então, obviamente, corrigir o bak.bashrc e movê-lo de volta para o lugar

    
por 02.01.2012 / 07:16
0

Conecte-se via SCP ou SFTP e edite / renomeie / exclua seu arquivo .bashrc dessa maneira. Edit - D'oh, vejo que você disse que tentou isso. Oh bem.

    
por 27.11.2010 / 21:25
0

Eu tive o mesmo problema e, de alguma forma, consegui resolvê-lo. Eu usei o ssh para acessar o sistema e pressionei e segurei Ctrl + c assim que entrei no sistema. Então, ~ / .bashrc não foi lido, e eu pude modificá-lo.

    
por 18.02.2011 / 23:55
0

Eu encontrei este trabalho.

Interrompa o boot loader pressionando e ... novamente pressione e para inserir as linhas de carregamento do grub, novamente pressione e para editar a linha do kernel,

ir para o final da linha;

adicione init = / bin / bash no final da linha,

digite para retornar, b para inicializar,

ele irá abrir um shell bash, abra o vim /root/.bashrc e edite de acordo. sair e agora vc poderá logar

    
por 04.01.2018 / 19:21
0

Se você estiver usando o Vagabundo de Homestead ...

Aqui está como eu saí desse picles.

(usando o Git Bash no Windows 10)

cd ../Homestead/
mv ~/.ssh/known_hosts ~/.ssh/known_hosts_OLD
ssh [email protected] -p 2222 mv ./.bashrc ./.bashrc_OLD

Nota: a senha padrão é "vagrant"

Esses artigos me ajudaram:

por 11.05.2018 / 00:01
0

Algumas sugestões que funcionaram para mim em este tópico do Reddit :

ssh [email protected] /bin/bash --noprofile --norc
ssh -t [email protected] vi ./.bashrc
    
por 25.09.2018 / 21:02