Скрипт для автоматического выполнения создания туннеля SSH


0

Я студент CS, и все еще учусь многим из этих вещей, поэтому, пожалуйста, потерпите меня, если я не совсем понимаю, что я пытаюсь здесь сделать.

Я на Mac, подключаюсь к машине linux. Я могу настроить туннель SSH и подключиться к удаленной машине, выполнив следующую строку сценария:

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

Что я хочу сделать, так это выполнить эту строку автоматически. Теперь я должен скопировать и вставить его в терминал. У меня настроены пары ключей, поэтому не нужно вводить пароли, но я получаю подсказку для моего типа терминала. Это два шага, которые я хотел бы исключить, поэтому я могу открыть терминал и запустить скрипт, который устраняет эти два шага.

Чего я не могу понять, так это как ответить на приглашение типа терминала или автоматически ответить на него. Я поигрался с классом Expect и модулем pexpect в Python, но не увенчался успехом (похоже, сценарий ожидаемого мог бы позаботиться о терминальной части, но не смог создать туннель и не потерял ссылку на фон. процесс).

У меня есть appleScript, который делает то, что я хочу, но хотел бы более портативное решение. Любые предложения о том, где искать, было бы здорово!

Ответы:


0

Вы можете поместить эту команду в обычный текстовый файл, который начинается с

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

Затем отметьте его как исполняемый файл, и он должен начинаться с двойного щелчка

Смотрите здесь для получения дополнительной информации о сценариях оболочки с OS-X

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


Спасибо - я хочу иметь возможность автоматизировать ответ при запросе типа терминала - это главная проблема, которая у меня есть. Я не знаю, как я могу сделать это с помощью bash-скрипта, поэтому я искал другие варианты.
Ребекка

Смотрите последний комментарий здесь, чтобы добавить к этому сценарию автоматический ответ: unix.com/shell-programming-scripting/…
MaQleod

Я просмотрел комментарии там, но не понимаю, как это применимо здесь. Можете ли вы объяснить немного больше? Похоже, что в этом примере целью является получение пользовательского ввода.
Ребекка

Какой тип терминала у вас на стороне OS-X? Обычно этот тип берется и «пересылается» на серверную часть ssh. В зависимости от вашего клиента SSH на OS-X, возможно, это применимо? rit.edu/its/services/desktop_support/mac/…
Андре Шильд

Он запускает указанную команду и затем, когда появляется запрос на ввод данных пользователем, вводит то, что вы укажете. Представьте, что пример сценария похож на сценарий в этом ответе, где он выполняет команду ssh. Вы бы создали другой скрипт, который выглядит как второй вариант. Когда второй сценарий запускается и вызывает первый сценарий, он ответит на приглашение тем, что находится между записями EOF.
MaQleod

0

Самый простой способ - создать псевдоним для этой команды. Добавьте эту строку в ваш $HOMe/.bashrcфайл:

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

Затем с обычного терминала вы сможете запустить свой туннель, запустив

tunnel

Спасибо - я хочу иметь возможность автоматизировать ответ при запросе типа терминала - это главная проблема, которая у меня есть. Я не знаю, как я могу сделать это с помощью bash-скрипта, поэтому я искал другие варианты.
Ребекка
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.