Script para executar automaticamente a criação do túnel ssh

0

Eu sou uma aluna do CS, e ainda estou aprendendo muitas dessas coisas, e por favor, tenha paciência comigo se eu não tiver uma compreensão completa do que estou tentando aqui.

Eu estou em um Mac, conectando a uma máquina Linux. Eu posso configurar um túnel ssh e conectar-me à máquina remota executando a seguinte linha de script:

ssh -f -L 2222:<remote_machine>:22 <user>@<remote_server> sleep 10; ssh -p 2222 <user>@localhost 

O que eu quero fazer é de alguma forma executar esta linha automaticamente. Agora, tenho que copiar e colá-lo no terminal. Eu tenho pares de chaves configurados, então não preciso digitar senhas, mas recebo o prompt do meu tipo de terminal. Estas são as duas etapas que gostaria de eliminar, para que eu possa abrir o terminal e executar um script que elimine essas duas etapas.

O que não consigo descobrir é como responder ao prompt "tipo de terminal" ou responder automaticamente a ele. Eu brinquei com a classe Expect, e com o módulo pexpect do Python, mas não tive sucesso (parece que um script esperado seria capaz de cuidar da parte terminal, mas ter problemas para criar o túnel e não perder a referência ao plano de fundo processo).

Eu tenho um applescript que faz o que eu quero, mas gostaria de uma solução mais portátil. Qualquer sugestão sobre onde procurar seria ótimo!

Rebecca
fonte

Respostas:

0

Você pode colocar este comando em um arquivo de texto normal, que começa com

#!/bin/bash
ssh -f -L 2222:<remote_machine>:22 <user>@<remote_server> sleep 10; ssh -p 2222 <user>@localhost 

Em seguida, marque-o como executável e ele deve começar com um clique duplo

Veja aqui mais informações sobre scripts de shell com o OS-X

http://www.noendpress.com/vroman/shellscripting/

André Schild
fonte
Obrigado - Eu quero ser capaz de automatizar a resposta quando solicitado tipo de terminal - esse é o principal problema que tenho. Eu não sei como posso fazer isso com um script bash, e é por isso que eu estava procurando outras opções.
Rebecca
Veja o último comentário aqui para adicionar a este script, a fim de fazer uma resposta automática: unix.com/shell-programming-scripting/…
MaQleod
Eu olhei através dos comentários lá, mas não entendo como isso se aplicaria aqui. Você pode explicar um pouco mais? Parece que, nesse exemplo, o objetivo é obter a entrada do usuário.
Rebecca
Qual é o tipo de terminal que você tem no lado do OS-X? Normalmente este tipo é tomado e "encaminhado" para o lado do servidor do ssh. Dependendo do seu cliente ssh no OS-X, talvez este se aplique? rit.edu/its/services/desktop_support/mac/…
André Schild
Ele executa o comando especificado e, quando há um prompt para a entrada do usuário, ele insere o que você especifica. Imagine que o script de exemplo seja semelhante ao script desta resposta, onde ele faz um comando ssh. Você criaria outro script que se parece com a segunda opção. Quando o segundo script é executado e chama o primeiro script, ele responderá ao prompt com o que estiver entre as entradas de EOF.
MaQleod
0

A maneira mais fácil deve ser criar um alias para este comando. Adicione esta linha ao seu $HOMe/.bashrcarquivo:

alias tunnel='ssh -f -L 2222:<remote_machine>:22 <user>@<remote_server> sleep 10; ssh -p 2222 user@localhost'

Então, a partir de um terminal normal, você poderá iniciar seu túnel executando

tunnel
Terdon
fonte
Obrigado - Eu quero ser capaz de automatizar a resposta quando solicitado tipo de terminal - esse é o principal problema que tenho. Eu não sei como posso fazer isso com um script bash, e é por isso que eu estava procurando outras opções.
Rebecca