我正在远程连接到共享服务器,并且希望在远程计算机中自动执行一行代码前我关闭连接(例如按 Ctrl+D)。
更具体地说,我想在离开之前杀死 SSH 代理,因为我注意到即使在我离开后它仍然在运行。该代理是由另一个程序启动的,所以我认为在我离开之前杀死它比改变它的启动方式更容易。
是否可以自动运行任意命令——如下所示——前关闭 SSH 连接?
# user attempts to close connection
# an arbitrary code or script runs
eval "$(ssh-agent -k)"
# connection is closed
也许类似于-t
标志 ( ),但它在断开连接之前运行,而不是在连接之后运行。ssh -t [email protected] 'cd /some/path; bash -l'
答案1
您可以设置一个trap
运行.bashrc
时间外壳退出:
就像是
trap 'test -n "$SSH_AGENT_PID" && eval "$(/usr/bin/ssh-agent -k)"' 0
可以选择添加一个例程.bash_logout