在 bash 脚本结束时关闭 ssh 会话

在 bash 脚本结束时关闭 ssh 会话

在系统(debian 8)每个用户的 .profile 中,我调用一个启动 typescript 会话的脚本,将所有内容记录在一个文件中:

#!/bin/bash

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

问题是,当您输入“exit”时,您只会停止 typscrit 会话,而不是 ssh 连接,因此您必须再次输入 exit。我想在退出 typescript 时通过输入“exit”关闭 ssh 连接。我尝试了不同的方法:

在我的脚本的最后:

exit
or
logout
or 
$(logout)

所有这些都会在退出打字稿后返回错误,例如使用logout$(logout)

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

但它是一个系统命令,所以我只需要在脚本末尾在系统中执行它就可以了!

在.bashrc中:

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

这个函数没有附加任何内容,当我点击“退出”时,typescript 停止,但 ssh 会话没有停止。

答案1

你的东西没有按照你想要的方式工作,但正如你所说的那样:

.profile 由 shell 提供,就像您手动输入每个字符一样。如果您在 shell 中执行脚本或其他程序,您希望在脚本完成后立即返回提示符。这正是您所经历的。

您可以在 .profile 中输入 exit,它会像在交互式 shell 中输入一样退出。您的 .profile 可能如下所示:

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

祝您的用户登录愉快!

相关内容