Я студент 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, который делает то, что я хочу, но хотел бы более портативное решение. Любые предложения о том, где искать, было бы здорово!

2 ответа2

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/

0

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

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

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

tunnel

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .