2008-11-14 116 views
6

如何在每次从一台机器到另一台机器执行ssh命令时执行命令?如何在每次从一台机器到另一台机器执行ssh命令时执行命令?

e.g

ssh mymachine 
stty erase ^H 

我宁愿只拥有 “的stty擦除^ H” 我的ssh连接完成后,执行每一次。

该命令不能简单地进入我的.zshrc文件。即对于本地会话,我无法运行该命令(它拧紧了我的键盘绑定)。但我需要它运行我的远程会话。

回答

0

假设Linux目标,把它放在你的.profile

+0

无法正常工作 - 查看我更新的问题信息。 – someguy 2008-11-14 02:48:36

1

如果你登录到* nix中框壳,为什么不把它放在你的shell启动?

.bashrc.profile在大多数情况下。

+0

无法正常工作 - 查看我更新的问题信息。 – someguy 2008-11-14 02:48:00

+0

够公平 - 我会和@ geocar的建议一起去。 – 2008-11-14 12:37:26

7

你可以把这样的事情到你的shell启动文件:

if [ -n "$SSH_CONNECTION" ] 
then 
    stty erase ^H 
end 

-n测试将确定是否SSH_CONNECTION设置通过SSH登录时才会发生。

0

尝试在〜/ .bashrc结尾下方添加命令。退出时应退出。你想要这个命令只有注销ssh会话时执行?本地会话等呢?

trap 'stty erase ^H; exit 0' 0 

您可能可以使用相同的模式从/ etc/profile设置.logout文件。

0

的回答对我们来说,屏幕/屏风用户:“必须连接到终端”

的geocar的解决方案将没有屏幕工作会抱怨。 (这可能是由于在启动 shell之前处理了.ssh/rc 这一事实造成的。请参见从man 8 sshd开始的一节)。

罗伯特的解决方案在这里更好,但自屏幕和byobu打开它自己的bash实例,我们需要避免无限递归。因此,这里被调整屏风的版本:

## RUN BYOBU IF SSH'D ## 
## '''''''''''''''''' ## 
# (but only if this is a login shell) 

if shopt -q login_shell 
then 
    if [ -n "$SSH_CONNECTION" ] 
    then 
     byobu 
     exit 
    fi 
fi 

注意byobu之后,我还添加了exit,因为IMO如果您在第一时间使用屏风,你通常不希望做任何事情,它的外面。