Piter Punk's HomePage - Artigos
 
English version
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].


Links Principal Artigos Piter Punk Dicas Programas
 
Powered by Slackware Linux - Written in VIm (the best one!) Last Update: 30 Oct 2004