Существует инструмент под названием Expect
который выполняет обобщенное рукопожатие и обмен информацией, который вы можете использовать, однако iTerm2 может делать то, что Expect делает прямо со вкладки Advanced.
Примечание: Expect написан на TcL, удивительном языке, который нужно знать самостоятельно. Этот конкретный вопрос, вероятно, прописан с хорошо прокомментированным ответом где-нибудь в Expect FAQ. Кроме того, если вы решили реализовать решение с Expect поверх iTerm2, вы можете использовать это решение не только на своем хосте OSX. Так что подумайте об этой сделке заранее. В краткосрочной перспективе вариант iTerm2 Triggers поможет вам.
Итак, чтобы получить часть того, что Expect предоставляет прямо из iTerm2, перейдите на вкладку Advanced. Там вы найдете возможность триггеров. Оттуда вы можете добавить "+" конкретное правило триггера. В двух словах, эти триггеры (и Expect) позволяют вам выполнять фильтрацию всего текста в Терминал и из него, сопоставлять этот текст с заданным пользователем триггером регулярных выражений (ReEx), а также когда это ReEx сопоставляется в текстовом потоке терминала. iTerm2 выполнит заданную пользователем задачу.
Вот одно правило триггера, которое будет соответствовать строке, содержащей ровно одно слово, Пароль, а затем Отправить текст: Мой пароль.
Имейте в виду, что поток «Терминальный текст» содержит невидимые символы, и задание точного соответствия ReEx может быть проблемой, особенно, например, потому что разные серверы реализуют разные разделители строк, и если ReEx специально использует один, он не может соответствовать для нет явной причины.
Одно: я думаю о том, почему вы можете задавать этот вопрос? Не уверен, что вы знакомы с, но если вы хотите автоматически войти через ssh
, добавьте комментарий, и его настройка - это просто. Если вы заинтересованы в этом, выполните поиск по ключевым словам «ssh-keygen» и "сгенерируйте открытые ключи rsa для ssh".
Я знаю, что это комментарий, но я решил добавить это, поскольку у меня уже есть место - для чего оно стоит:
Я думаю, что можно использовать Send text at start:
для установки переменных среды, которые имеют отношение к сеансу удаленного хоста. Например, я использовал этот метод для передачи параметров в мои удаленные процессы в качестве средства передачи параметров через переменные среды. Я не уверен, но это было бы использование этого поля Command
для настройки того, что происходит, когда запускается определенный ssh userid@hostname
.
См. Второй ответ в:Возможно ли заставить SSH пересылать пустые аргументы? для полного примера, но все сводится к следующему синтаксису:
$ ssh me@localhost 'VAR1="var1 text" /tmp/try.pl'
Я предполагаю, что одним из возможных вариантов использования опции « Send text at start:
является предоставление VAR1="var1 text" /tmp/try.pl
или, просто, VAR="var1 text"
в среду удаленного процесса.
Вот более конкретный пример с нуля, использующий хост Mac Dual-G5 с именем r2d2:
Вот как я настроил профиль r2d2:
Теперь, когда я нажимаю на r2d2 iTerm2 и выводю echo $FRED
, я вижу, что любая команда, которую я бы вызвал, а именно ssh, может исследовать среду и определить контекст для выполнения:
Конечно, это предположение, учитывая то, что я испытал, так что это всего лишь одна возможность. Теперь я знаю, что смогу использовать этот путь управления, так что спасибо за вопрос.