2008-11-14 25 views
6

Làm cách nào để thực thi lệnh mỗi lần sau khi ssh'ing từ máy này sang máy khác?Làm cách nào để thực thi lệnh mỗi lần sau khi ssh'ing từ máy này sang máy khác?

ví dụ

ssh mymachine 
stty erase ^H 

Tôi chỉ muốn có "stty xóa^H" thực hiện sau mỗi lần kết nối ssh của tôi hoàn tất.

Lệnh này không thể đơn giản đi vào tệp .zshrc của tôi. tức là đối với các phiên địa phương, tôi không thể chạy lệnh (nó bật lên khóa của tôi). Nhưng tôi cần nó chạy cho các phiên từ xa của tôi.

Trả lời

0

Giả sử một mục tiêu linux, đặt nó trong bạn .profile

+0

Sẽ không hoạt động - xem thông tin câu hỏi được cập nhật của tôi. – someguy

1

Nếu bạn đang đăng nhập vào một hộp * nix với một vỏ, tại sao không đặt nó trong khởi động shell của bạn?

.bashrc hoặc .profile trong hầu hết các trường hợp.

+0

Sẽ không hoạt động - xem thông tin câu hỏi được cập nhật của tôi. – someguy

+0

Đủ công bằng - tôi sẽ đi với gợi ý @ geocar sau đó. –

7

Bạn có thể đặt một cái gì đó như thế này vào tập tin shell startup:

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

Các thử nghiệm -n sẽ xác định xem SSH_CONNECTION được thiết lập mà chỉ xảy ra khi đăng nhập qua SSH.

0

Thử thêm lệnh dưới đây vào cuối ~/.bashrc của bạn. Nó sẽ được thoát khi đăng xuất. Bạn có muốn lệnh này chỉ chỉ được thực hiện khi đăng xuất khỏi phiên ssh không? Còn về phiên địa phương, v.v ...?

trap 'stty erase ^H; exit 0' 0 

Bạn có thể thiết lập tệp .logout từ/etc/profile bằng cùng một mẫu này.

10

Đặt lệnh trong ~/.ssh/rc

+0

+1, tôi biết phải có cách tốt hơn để thực hiện việc này. –

+0

+1, không biết điều này đã tồn tại. –

0

Một câu trả lời cho chúng tôi, màn hình/người dùng Byobu: "Phải được kết nối với một thiết bị đầu cuối" giải pháp

của geocar sẽ không hoạt động như màn hình sẽ phàn nàn rằng. (Điều này có thể do thực tế là .ssh/rc được xử lý trước khi bắt đầu vỏ. Xem phần LOGIN PROCESS từ man 8 sshd).

Giải pháp của Robert tốt hơn ở đây nhưng vì màn hình và byobu mở thể hiện bash của chính nó, chúng ta cần tránh sự đệ quy vô hạn. Vì vậy, đây được điều chỉnh phiên bản Byobu thân thiện:

## 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 

Lưu ý rằng tôi cũng nói thêm exit sau byobu, vì IMO nếu bạn sử dụng Byobu ở nơi đầu tiên, bạn thường không muốn làm bất cứ điều gì bên ngoài của nó.

Các vấn đề liên quan