Thông thường, nếu bạn truyền lệnh cho ssh như vậy
ssh me@example.com 'some-command.sh'
Bạn nhận được một phiên không tương tác và ssh thoát ngay khi lệnh (hoặc tập lệnh hoặc bất cứ thứ gì) được chạy. Làm cách nào tôi có thể có phiên tương tác và chạy lệnh mà tôi đã chỉ định từ máy cục bộ của mình. Chẳng hạn, tôi muốn có thể mở màn hình và khởi động lại một phiên màn hình cụ thể:
ssh me@example.com 'screen -r 12345'
nhưng điều này không được phép, trả về lỗi "Phải được kết nối với thiết bị đầu cuối." mà tôi đoán có nghĩa là về cơ bản "phải gọi lệnh này từ một vỏ tương tác".
Một ví dụ khác, tôi sử dụng rất nhiều máy móc tại nơi làm việc thường yêu cầu tôi sử dụng tài khoản dùng chung để có quyền làm một số việc nhất định (vâng tôi biết: ý tưởng tồi nhưng đừng đổ lỗi cho tôi, tôi đã không thiết lập mọi thứ cách) và họ thường có ksh làm vỏ mặc định. Tôi muốn đăng nhập, chuyển sang bash (hoặc zsh) và lấy nguồn .bash_profile (hoặc .zshrc) của tài khoản của riêng tôi. Điều này sẽ dễ dàng nếu tôi có thể thiết lập một phiên ssh tương tác và truyền lệnh cho máy từ xa để chạy khi đăng nhập.
Tôi có một giải pháp rất bùn (và chưa được kiểm tra) trong đầu rằng tôi sẽ đăng, nhưng tôi hy vọng ai đó biết một cách tốt hơn.
CẬP NHẬT: đối với những người không nhận ra điều này, tôi không có kế hoạch làm tất cả những điều này bằng tay, vì vậy, bảo tôi mở một phiên tương tác và sau đó thực hiện bằng tay không thực sự giải quyết được gì.
CẬP NHẬT thứ 2: Để thử một lần nữa để làm rõ: Tôi đang cố chạy các lệnh (tùy ý) trên máy chủ (được chỉ định theo chương trình trên máy khách) nhưng sau đó mở phiên tương tác bị ảnh hưởng bởi bất kỳ điều gì được thực hiện bởi các lệnh lập trình đó.
echo "command" | ssh user@remote_host