Script menu abre nova janela/sessao por ssh putty

1. Script menu abre nova janela/sessao por ssh putty

daniel
danueli

(usa Ubuntu)

Enviado em 11/11/2015 - 19:04h

Olá pessoal
Já fazia algum tempo que não vinha por cá.
Já fiz alguma pesquisa cá no forum e fora.. só que não conseguir encontrar a melhor solução.

Utilizo wind00s com Putty para aceder por ssh ao servidor ubuntu.
Basicamente quero executar o menu.sh quando aparece o menu de selecção pretendo que consoante a opção ele abra 'automaticamente' uma nova janela/sessão do putty com o mesmo utilizador para executar um script ou comandos, sem que o menu/script actual desapareça e que tenha que voltar ao ponto de voltar a executar.
Ou seja, pretendo selecionar num menu abrindo uma janela nova ou que regresse ao menu/script anterior.

$ ./menu.sh

menu.sh
#!/bin/bash
#### Variaveis
RTDIR='/root'
BASEDIR=$RTDIR'/do'
CNFDIR=$BASEDIR'/cfg'
#cp -Ruv $BASEDIR /tmp/

# Menu Principal
while true
do
clear
cat<<EOF
==============================
Menu Principal
------------------------------
Selecione:

Ola - (1)
Adeus - (2)
Lol - (3)
(L)aerodump
(C)lean

(Q)uit
------------------------------
EOF
read OPTN
case "$OPTN" in
"1") bash $BASEDIR/ola.sh ;; # Executa script nesta janela putty
"2") bash $BASEDIR/adeus.sh ;; # Executa script nesta janela putty
"3") bash $BASEDIR/lol.sh ;; # Executa script em NOVA janela putty
"L") bash airodump-ng mon0 ;; #fica aberto em nova janela para continuar a consultar as redes
"Q") clear && exit ;;
* ) echo "Opcao invalida!" && sleep 1 ;;
esac
done


ola.sh
#!/bin/bash
RTDIR='/root'
BASEDIR=$RTDIR'/do'
CNFDIR=$BASEDIR'/cfg'
echo " =================="
echo "|| OLA||"
echo
while true
do
clear
cat<<EOF
==============================
OLa System
------------------------------
Usar?

(1) - manha
(2) - noite
(L)ogs

(S)air Menu Principal
------------------------------
EOF
read OPTN
case "$OPTN" in
"1") bash manha.sh ;; # executar este script em numa nova janela do putty
"2") bash echo "Ola a noite" ifconfig ;; # abrir uma nova janela no putty e executar o/os comando/s
"S") exit ;; # Voltar para o menu.sh
"s") echo "case sensitive!!" ;;
* ) echo "Opcao invalida!" ;;
esac
done


Espero que alguém me possa ajudar com este script ou que tenha entendido o que pretendo.

Obrigado
danuel


  


2. Re: Script menu abre nova janela/sessao por ssh putty

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/11/2015 - 19:57h

Posso estar falando uma grande besteira, mas acho um pouco improvável que você consiga algo assim.

O putty executa numa máquina remota, abrindo uma sessão de SSH com a máquina em que o menu.sh executa. Mesmo que você conseguisse abrir uma nova janela do putty por meio de algum mecanismo (tal como uma seuncia de escape), ainda teria de estabelecer a conexão SSH, e conseguir que ela executasse o comando desejado nessa sessão.

Nada impossível, na verdade. Assim como existe uma sequência de escape para mudar o título da janela, poderia haver uma que mandasse uma instrução. Só que isso seria um tremendo buraco de segurança. De certo modo, é até bom que ninguém ainda tenha criado (ou documentado) tal recurso.

Uma solução alternativa seria trocar o putty pelo MobaXterm -- o que, aliás, eu recomendo, independentemente de qualquer outra coisa. O MobaXterm conjuga as funções de cliente de SSH com servidor de janelas X11 e se integra bem com a gestão de janelas do Windows. Com isso, você poderia abrir janelas novas chamando literalmente um xterm no lado do servidor SSH, que seriam exportadas via protocolo X11 e exibidas pelo MobaXterm, no lado do Windows. Com essa solução, seu script ficaria com blocos de código mais ou menos como vão abaixo.

if [[ -z "$DISPLAY" ]]; then
# chama comando na janela corrente
comando arg1 arg2 arg3
else
# Chama comando dentro de janela do Xterm
# (se quiser, pode colocar um "&" no final da linha
# de comando, e ele será executado em segundo
# plano, prosseguindo com o script local).
xterm -title "Comando" -e comando arg1 arg2 arg3
fi



3. Re: Script menu abre nova janela/sessao por ssh putty

daniel
danueli

(usa Ubuntu)

Enviado em 15/11/2015 - 16:17h

Olá paulo1205
Desde já obrigado pela rápida resposta.
Estive estes dias a usar o mobaXterm e parece bem.

O problema é que não estou a usar o xterm pois é servidor sem GUI (gnome kde.....) (vou testar com ambiente GUI)
[s]Vou tentar saber sobre substituir o xterm por o sh ou bash para executar.[/s]

Valeu a dica!

basicamente o que pretendo é ao executar o script abrir a opção em outra janela/terminal. a Ideia é mesmo esta
Fico a aguardar mais ajudas e opiniões/ideias :)
============
Update
=======
Bem consegui usar o comando certo para ubuntu server 14

Agora não estou a compreender como este $DISPLAY funciona com o MobaXterm, porque a ola.sh não faz nada.
Pois com o if sei que não me safo.

teste.sh

if [[ -z "$DISPLAY" ]]; then
# chama comando na janela corrente
command -p sh ola.sh
else
# Chama comando dentro de janela do Xterm
# (se quiser, pode colocar um "&" no final da linha
# de comando, e ele será executado em segundo
# plano, prosseguindo com o script local).
command -p sh menu.sh
fi



4. Re: Script menu abre nova janela/sessao por ssh putty

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/11/2015 - 15:55h

danueli escreveu:

O problema é que não estou a usar o xterm pois é servidor sem GUI (gnome kde.....) (vou testar com ambiente GUI)
[s]Vou tentar saber sobre substituir o xterm por o sh ou bash para executar.[/s]

Valeu a dica!

basicamente o que pretendo é ao executar o script abrir a opção em outra janela/terminal. a Ideia é mesmo esta


Você não precisa de uma ambiente X11 completo para ter um emulador de terminal. É possível até que você já tenha algumas bibliotecas do X11 instaladas por causa de outras aplicações (como certos módulos de Java, por exemplo), e talvez consiga instalar um emulador de terminal simples (como xterm, rxvt ou LilyTerm, por exemplo) sem aumentar muito a quantidade de pacotes instalados.

Agora não estou a compreender como este $DISPLAY funciona com o MobaXterm, porque a ola.sh não faz nada.
Pois com o if sei que não me safo.


A variável DISPLAY, se definida, indica qual servidor X11 deve ser usado para exibir a saída gráfica. O servidor X11 pode ser local da máquina, ou encaminhado através da rede.

O SSH pode ser invocado com opções que habilitam ("-X" ou "-Y") ou desabilitam ("-x") um túnel para aplicações baseadas em X11. Se o túnel estiver habilitado, o servidor SSH automaticamente define um valor para a variável DISPLAY que force a passagem das mensagens do socket X11 por esse túnel.

Assim, o bloco que testa o valor de DISPLAY serve justamente para tentar abrir a aplicação numa janela nova, se houver um ambiente capaz de desenhar tal janela, ou para executar na mesma janela, se não houver ambiente gráfico que possa ser usado.