Всем доброго дня,
Недавно я узнал о моей способности отправлять команды обратно на мою локальную рабочую станцию с удаленного SSH-соединения с помощью <enter>~C
escape-последовательность, например:
[root@host ~]#
[root@host ~]#
ssh> !ip ad
Теперь я хотел бы иметь возможность делать это с помощью сценария bash для автоматического запуска команд на моей локальной рабочей станции или выполнения других действий, но я не смог найти способ программной отправки команд обратно в эту оболочку и никого не нашел. еще кто спрашивал / пробовал. Чтобы было ясно, я не пытаюсь отправлять команды НА удаленный сервер через SSH - я пытаюсь отправить команды НАЗАД на мою рабочую станцию ИЗ SSH-соединения через клиента (как показано на рисунке выше).
Если у кого-то есть предложения или кто-то знает, как это сделать, я был бы очень признателен за вашу помощь. Спасибо!
Я думаю, что это невозможно, потому что escape-символ никогда не достигает Bash в удаленной системе. Он перехватывается вашим локальным SSH-клиентом до того, как удаленный bash сможет его установить.
Я знаю, что это не то, о чем вы просили, и может оказаться невозможным в зависимости от вашей ситуации, но альтернативное решение может достичь вашей цели:
Запустите команду на своем локальном компьютере, вернувшись к нему по SSH с удаленного компьютера:
[root@remote-host ~]# ssh your-local-machine ip ad
Поскольку это является проблемой безопасности, вы не сможете запускать локальные команды с удаленного хоста в рамках SSH-соединения.
Способ выхода из соединения для передачи команд - через терминал, т.е. с локального сервера.
Итак, если вы хотите запустить как соединение, так и сценарий через SSH-соединение, вы можете попробовать посмотреть на expect, но это будет происходить путем встраивания или переноса вашего SSH-соединения в другое приложение, а не напрямую из удаленной оболочки.