Представьте себе сценарий, в котором я вошел на сервер (который мы назовем "Уоллес") с моей локальной машины, а оттуда я ssh
на другой сервер (который мы назовем «Громит»):
laptop ---ssh---> Wallace ---ssh---> Gromit
Затем сеанс ssh от Уоллеса до Громита зависает, и я хочу его убить. Если я войду ~.
чтобы убить ssh, он убивает сеанс ssh от моего ноутбука до Уоллеса, потому что ~
перехватывается этим сеансом ssh, и .
воспринимается как команда на завершение сеанса. Как отправить команду сеансу ssh между Уоллесом и Громитом? Как мне убить свой "внутренний" ssh?
Добавьте еще одну тильду (например, введите ~~.
). Каждую последующую тильду съедает самый внешний сеанс ssh, который еще не съел ни одного, но если следующий символ - другая тильда, он передается в следующий сеанс в.
Если от громита1, вы отправили ssh на третий хост (назовем его wensleydale), затем ~~~.
сбросит сеанс в wensleydale и вернет вас к приглашению на gromit.
1 И какой это замечательный сервер; как часто я слышал реплику разработчика "взлом хост, громит"?
Вы можете вводить произвольные команды и перехватывать вывод внутренней оболочки в переменную.
export output=`echo some_cmd | ssh user@host | echo some_cmd2 | ssh user2@host2`