2008-11-14 153 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如果您在第一時間使用屏風,你通常不希望做任何事情,它的外面。