Назад | Перейти на главную страницу

Закройте сеанс ssh в конце сценария bash

В профиле каждого пользователя системы (debian 8) я вызываю сценарий, который запускает сеанс машинописного текста, чтобы записать все в файл:

#!/bin/bash

script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log

Дело в том, что когда вы вводите "exit", вы просто останавливаете сеанс typscrit, а не ssh-соединение, поэтому вам нужно снова ввести exit. Я хотел бы закрыть ssh-соединение, когда мы выйдем из машинописного текста, введя "exit". Я пробовал разные вещи:

В конце моего сценария:

exit
or
logout
or 
$(logout)

Все это возвращает ошибку после выхода из машинописного текста, например, с logout или $(logout):

/pathtoscript/log.sh: 9: /pathtoscript/log.sh: logout: not found

Но это системная команда, поэтому мне просто нужно выполнить ее в системе в конце скрипта, и это должно быть хорошо!

в .bashrc:

function exit() { builtin exit && exit; }

Ничего не добавляется с этой функцией, когда я нажимаю "выйти", остановка машинописного текста, но не сеанс ssh.

Ваши вещи работают не так, как вы хотите, а именно так, как вы им сказали:

.profile берется из вашей оболочки, как если бы вы вводили каждый символ вручную. Если вы выполняете сценарий или другую программу в своей оболочке, вы ожидаете вернуться к приглашению, как только оно будет завершено. Это именно то, что вы переживаете.

Вы можете поместить выход в свой .profile, и он выйдет, как если бы вы набрали его в интерактивной оболочке. Тогда ваш .profile может выглядеть так:

# ... whatever comes before
script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log
exit

Удачной регистрации ваших пользователей!