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.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts