it-swarm-vi.com

Làm cách nào tôi có thể khởi chạy phiên màn hình với lệnh trên ssh trên máy chủ từ xa từ máy tính để bàn của mình?

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.

58

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ộ. [.__.]
79
Kjetil Joergensen

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.
33
Alakdae

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.

8
w00t

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
4
Brent