Зазвичай, якщо ви передаєте команду, щоб ssh так було
ssh me@example.com 'some-command.sh'
Ви отримуєте неінтерактивний сеанс, і ssh завершується, як тільки виконується команда (або сценарій, або будь-що інше). Як я можу отримати інтерактивний сеанс та ще запустити команду, яку я вказав із своєї локальної машини. Наприклад, я хотів би мати можливість відкрити екран і перезапустити певний екранний сеанс:
ssh me@example.com 'screen -r 12345'
але це не дозволено, повертаючи помилку "Повинен бути підключений до терміналу." що я припускаю, що по суті означає "повинен викликати цю команду з інтерактивної оболонки".
Як інший приклад, я використовую тону машин на роботі, які часто вимагають від мене спільного облікового запису, щоб мати права робити певні речі (так, я знаю: погана ідея, але не звинувачуйте мене, я не налаштовував це на те, спосіб), і вони зазвичай мають ksh як оболонку за замовчуванням. Я хотів би увійти, перейти на bash (або zsh) та надати джерело .bash_profile (або .zshrc) мого облікового запису. Це було б легко, якби я міг встановити інтерактивний сеанс ssh і передати команду віддаленій машині для запуску при вході в систему.
Я маю на увазі дуже незрозуміле (і неперевірене) рішення, яке опублікую, але сподіваюся, що хтось знає кращий спосіб.
ОНОВЛЕННЯ: для тих, хто цього не усвідомлював, я не планую робити все це вручну, тому сказати мені відкрити інтерактивну сесію, а потім зробити це вручну, насправді нічого не вирішує.
2-е ОНОВЛЕННЯ: Щоб спробувати ще раз уточнити: я намагаюся запускати (довільні) команди на сервері (програмно вказані на клієнті), але потім відкриваю інтерактивну сесію, на яку впливає все, що робиться цими програмними командами.
echo "command" | ssh user@remote_host