Recuperando uma sess�o SSH
Piter PUNK
Quantas vezes voc� j� n�o passou por isso, enquanto estava
editando um script, ou aguardando a sa�da de um comando
demorado, a sua linha telef�nica cai e todo o trabalho vai
por �gua abaixo. Agora voc� pode sair de uma conex�o e voltar
de onde parou, utilizando o screen.
1. Introdu��o
O screen � um gerenciador de janelas em modo texto; com ele �
poss�vel ter v�rias sess�es dentro de um mesmo terminal, voc� pode dividir
a tela em duas janelas (como no splitvt), copiar e colar sem mouse, entre
outras caracter�sticas.
Muita gente usa o screen nas tarefas do dia-a-dia,
como responder e-mails em uma janela, falar no irc em outra e ainda ter
uma shell em uma terceira... agora, iremos utilizar os recursos do
screen para preservar as nossas conex�es remotas.
2. Resuminho...
Antes de mais nada, um resuminho dos comandos do screen,
para ajudar o pessoal que ainda n�o conhece essa maravilha.
A primeira coisa que voc� deve aprender �: para entrar com
um "comando", � necess�rio teclar primeiro
ctrl+a. Os comandos b�sicos s�o:
- d -> desconecta da tela atual (mas deixa tanto o screen
quanto a tela rodando em background)
- c -> cria uma nova tela
- n -> vai para a pr�xima tela
- 0-9 -> troca de janela (voc� pode ter at� 10 janelas e
intercalar entre elas)
- ? -> Help com os comandos.
Se voc� quiser saber mais, consulte a p�gina de manual (que
� bem completa e explicativa)
3. M�os a obra
Agora que j� estamos extremamente craques no uso do screen,
vamos ao que nos motivou a escrever este artigo. Um dos
nossos primeiros itens � um script que vamos colocar no
lugar do .bash_profile (se voc� n�o tiver nenhum, vai passar
a ter agora).
Este novo .bash_profile � para ser colocado no seu $HOME
da m�quina remota, ele � lido toda vez que ocorre que o
bash � chamado via login (ou quando voc� passa a op��o -ls
para o seu "xterm" favorito).
Assim, toda vez que voc� logar, ele ser� executado.
O script � bem simples e est� muito bem comentado... depois
que voc� digit�-lo, basta copiar para o seu $HOME na m�quina
remota que voc� quer acessar.
3.1. O script
# .bash_profile
#
# verifica se existe um .bashrc, se existir, executa-o
#
if [ -e .bashrc ]; then
source .bashrc
fi
#
# verifica se existe alguma tela desconectada
#
DETACH=`screen -ls | grep -c "Detached"`
#
# Se houver mais que uma, lista as se��es na tela com
# o comando para recuper�-las
#
if [ $DETACH -gt 1 ]; then
screen -ls
echo "You can reattach one of detached session using:"
echo -e "\tscreen -r nnnn.tty.host\n"
#
# Se houver apenas uma sess�o aberta, ele conecta
# automaticamente, sem precisar de comando nenhum.
#
elif [ $DETACH -eq 1 ]; then
SESSION=`screen -ls | grep "Detached" | awk '{print $1}'`
screen -r $SESSION
#
# Se houver menos que uma sess�o (ou seja, nenhuma) aciona
# um novo screen
#
else
screen -a
fi
4. Testando
Agora, depois do script digitado e copiado para o $HOME da
m�quina remota, restou o teste. Conecte na m�quina remota,
voc� ver� que ele ir� conectar automaticamente no screen.
Digite algum comando, pode ser um ls por exemplo. Agora
derrube a conex�o (se voc� estiver em um xterm, basta fechar
a janela) e conecte novamente. Voc� retornou diretamente
� �ltima tela em que estava! � m�gica! -:)
Se voc� quiser sair e manter o screen rodando, utilize o
comando ctrl+a d e desconecte da tela em que voc� est� com
o screen e depois saia normalmente do SSH com o comando
exit. Na pr�xima vez que voc� acessar a m�quina remota,
voc� ir� reconectar automaticamente retornando de onde parou
antes do ctrl+a d.
5. Conclus�o
O screen � extremamente vers�til e �til, e agora descobrimos
mais uma utilidade para ele. Acessar atrav�s de linhas inst�veis
ou lent�ssimas se torna bem mais f�cil com a possibilidade
de restaurarmos uma sess�o de onde paramos. Qualquer d�vida,
elogio ou cr�tica a respeito deste artigo ou at� mesmo sugest�es
para novos artigos, mande um e-mail para
[email protected].
|