Cách tự động chạy lệnh sau khi thoát ssh


10

Làm cách nào tôi có thể tự động chạy một lệnh trên thiết bị đầu cuối cục bộ sau khi thoát sshkết nối? Có bất kỳ hook hoặc sự kiện có thể được xử lý cho điều này?

Câu trả lời:


13

Tận dụng một aliashoặc tốt hơn một chức năng.

Ví dụ:

ssh () { command ssh "$@"; echo foobar; }

Bây giờ, bạn có thể chạy:

ssh mysite

sau khi bạn thoát khỏi sshphiên, echo foobarsẽ được chạy.

Thay đổi echo foobarvới lệnh thực tế bạn cần chạy và tất nhiên bạn có thể giải quyết nhiều lệnh nếu muốn.

Để làm cho định nghĩa hàm vĩnh viễn, đặt nó trong của bạn ~/.bashrc.


Cũng lưu ý rằng, không phải lúc nào bạn cũng muốn có chức năng được đặt tên như sshkhi bạn muốn sử dụng bên ngoài một cách rõ ràng ssh. Trong trường hợp đó, bạn có thể sử dụng bất kỳ một trong các cách sau để bỏ qua sshhàm để nhận sshnhị phân bên ngoài :

command ssh mysite

hoặc đổi tên hàm thành cái gì khác, vd sshfunc:

sshfunc () { ssh "$@"; echo foobar; }

4
lưu ý: Tôi khuyên bạn nên đổi tên hàm thành một tên khác ngoài "ssh", vì vậy bạn giữ ssh nghĩa gốc của nó ... có thể: ssh2? hay sshcmd? (nếu không, bạn có thể quên tác dụng phụ của nó khi thực hiện những việc như :: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgzđiều này sẽ sai vì nó sẽ chứa "foobar" ở cuối ...)
Olivier Dulac

@OlivierDulac Điểm hay, đã chỉnh sửa.
heemayl

\ ssh 'ssh' và "ssh" chỉ thoát một bí danh, lệnh ssh sẽ chạy lệnh (thoát cả bí danh và hàm).
Olivier Dulac

@OlivierDulac Không biết điều đó, đã sửa.
heemayl

Nó giống như trong bash, có thể thay đổi với các shell khác ... nhưng bây giờ, tôi thích câu trả lời của bạn với những bổ sung đó, bạn nhận được +1 của mình ^^
Olivier Dulac
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.