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