Tôi muốn có thể khởi chạy các phiên màn hình trên các máy chủ từ xa từ một lệnh ssh duy nhất trên máy tính để bàn của tôi. Tuy nhiên, màn hình dường như cần một thiết bị đầu cuối, không có sẵn khi chạy lệnh thông qua ssh.
Rõ ràng
ssh [email protected] screen "tail -f /var/log/messages"
(như một ví dụ) không hoạt động, và đưa ra
Must be connected to a terminal.
Tôi muốn ssh khởi chạy lệnh dưới một màn hình để tôi có thể đăng nhập sau và đính kèm như một phiên màn hình mà tôi sẽ khởi chạy thủ công.
Hãy thử sử dụng tùy chọn -t để ssh
ssh -t [email protected] screen "tail -f /var/log/messages"
Từ người đàn ông ssh
[.__.] - t Buộc phân bổ giả. Điều này có thể được sử dụng để thực thi arbi - [.__.] Các chương trình dựa trên màn hình ba chiều trên một máy từ xa, có thể là [.__ Nhiều tùy chọn -t [.__.] Buộc phân bổ tty, ngay cả khi ssh không có tty cục bộ. [.__.]
Bạn có thể dùng:
ssh [email protected] screen -m -d "tail -f /var/log/messages"
Điều đó bắt đầu một màn hình tách rời với một lệnh chạy trên nó.
-m causes screen to ignore the $STY environment variable. With
"screen -m" creation of a new session is enforced, regardless
whether screen is called from within another screen session or
not. This flag has a special meaning in connection with the `-d'
option:
-d -m Start screen in "detached" mode. This creates a new session but
doesn't attach to it. This is useful for system startup
scripts.
Câu trả lời muộn, nhưng đây là những gì tôi làm, tôi tạo một bí danh (hãy gọi nó là t) thực hiện điều này:
ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O
Điều này nói với ssh
để vô hiệu hóa tác nhân và chuyển tiếp X11 và bảo screen
gắn vào phiên đang chạy, bắt đầu một phiên bản mới nếu cần, sử dụng ^Z
làm lệnh breakout, sử dụng UTF-8 và thông minh về thiết bị đầu cuối.
Tất cả điều này có nghĩa là tôi có thể mở một thiết bị đầu cuối, gõ t
và nó sẽ mở phiên màn hình của tôi trên $ MYSERVER. Sau đó tôi có thể mở một thiết bị đầu cuối khác, làm điều tương tự và tôi nhận được một cửa sổ khác cho cùng một phiên.
Thật tuyệt khi có nhiều cửa sổ đầu cuối vào cùng một phiên màn hình để bạn có thể xem hai tab màn hình cùng một lúc.
Bằng cách đặt phần sau vào tệp ~/.bashrc trên máy chủ của tôi, nó sẽ bắt đầu phiên màn hình vào lần đầu tiên tôi đăng nhập vào máy chủ hoặc nếu một tệp đang chạy, hãy kết nối lại tôi với phiên đó.
Tôi thấy điều này rất tiện dụng:
if [ -n "$SSH_CONNECTION" ] && [ -z "$SCREEN_EXIST" ]; then
export SCREEN_EXIST=1
screen -DRi
fi