如何:在Linux用户登录→自动执行命令(例如,顶部)→命令执行停止时自动注销

西弗雷

我可以在linux上创建用户并进行配置吗,以便在我使用ssh登录时执行命令,并在该命令完成后强制用户注销。

cha

那完全有可能。我使用以下命令在登录时自动执行GNU屏幕,并在退出屏幕时自动退出会话:

cat << _EOF_ > /etc/profile.d/00-micha.sh
# Autostart screen and auto logout
[ "\$TERM" != 'screen' ] && screen -U -S sshscreen -d -R && exit
_EOF_

要使其仅针对SSH会话上的当前用户,请执行以下操作:

cat << _EOF_ >> ~/.profile
# Start myCommand on SSH login sessions and exit when myCommand stops
[ -n "\${SSH_TTY}" ] && myCommand && exit
_EOF_
  • 这会将代码行添加到当前用户.profile文件的末尾,该文件将在所有登录会话中执行/获取,这是通过SSH登录时的情况。
  • 它通过检查设置SSH_TTY变量来检查它是否为SSH会话,该变量至少由OpenSSH和Dropbear SSH服务器自动设置。还有其他可能性,但是这种可能性很快,应该并且可靠。
  • 它会执行myCommand(当然,用命令+参数替换),并在命令成功退出时退出我更喜欢这种方式,这样在出现错误的情况下,您可能希望以交互方式调查问题,而不是无法使用此用户通过SSH登录(命令崩溃时自动注销)。但是,如果您甚至希望它在出现myCommand错误的情况下注销/退出,则可以将代码行调整为:
    [ -n "${SSH_TTY}" ] && { myCommand; exit; }
    

Bash并且zsh还有许多其他文件是在不同类型的登录/会话期间获取的,因此,如果您需要更具体的信息,我可以添加更多详细信息,或者您可能想要shell手册页,例如bash(“调用”部分) :https : //linux.die.net/man/1/bash

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章