Chạy script từ xa trên Unix, lấy đầu ra cục bộ?


44

Tôi cần chạy tập lệnh (Tcl hoặc bất cứ thứ gì) trên máy Unix từ xa, từ vỏ lệnh Windows (cục bộ) và tôi muốn stdout / stderr của tập lệnh hiển thị trong Windows CLI. Mã thoát cũng sẽ hữu ích.

Điều này có thể sử dụng ssh (putty)? Hoặc bằng bất kỳ phương tiện nào khác?

Cảm ơn!

Câu trả lời:


43

Đây là mặc định cho SSH. Nếu bạn muốn chuyển hướng đầu ra từ xa, hãy đặt biểu tượng chuyển hướng (thường là ">") bên trong dấu ngoặc kép lệnh.

Ví dụ:

ssh remote_host "ls > /tmp/file_on_remote_host.txt"

Để lưu đầu ra cục bộ trên máy chủ Windows,

ssh remote_host "ls" > .\file_on_local_host.txt

Để kết hợp thiết bị lỗi chuẩn từ xa và lưu nó và thiết bị xuất chuẩn cục bộ,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt

Có thể làm điều này với putty.exe? Tức là hoạt động như một chương trình CLI "bình thường" trái ngược với mặc định, đó là mô phỏng một thiết bị đầu cuối.
Cristi Diaconescu

Tôi đã đưa vào hệ thống Windows 2003 và chạy dòng lệnh, vâng. Máy chủ đã cài đặt phiên bản máy chủ SSH của HP để hỗ trợ các công cụ quản trị hệ thống của họ. Nếu bạn chỉ có máy khách SSH thì mọi thứ đang chạy trên hệ thống từ xa.
kmarsh

1
Điều này cũng hoạt động cho một máy cục bộ không chạy Windows.
shiri

Ngoại trừ đường dẫn dấu gạch chéo ngược, có.
kmarsh

20

Những gì tôi đang tìm kiếm là cú đá phụ của putty, plink.exe . Không giống như putty, hoạt động như một trình giả lập thiết bị đầu cuối, plinkhoạt động như một chương trình CLI bình thường (không tương tác).

Sử dụng nó, tôi có thể làm điều này trong cmd.exevà nhận đầu ra lệnh từ xa được lưu cục bộ.

\> plink remote_host "ls -l" > log.txt

Tốt nhất của tất cả, điều này làm việc cho ssh cũng như telnet !

Chỉ dành cho mục đích tham khảo, đây là các tùy chọn có sẵn:

PuTTY Link: command-line connection utility
Release 0.59
Usage: plink [options] [user@]host [command]
       ("host" can also be a PuTTY saved session name)
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -ssh -telnet -rlogin -raw
            force use of a particular protocol
  -P port   connect to specified port
  -l user   connect with specified username
  -batch    disable all interactive prompts
The following options only apply to SSH connections:
  -pw passw login with specified password
  -D [listen-IP:]listen-port
            Dynamic SOCKS-based port forwarding
  -L [listen-IP:]listen-port:host:port
            Forward local port to remote address
  -R [listen-IP:]listen-port:host:port
            Forward remote port to local address
  -X -x     enable / disable X11 forwarding
  -A -a     enable / disable agent forwarding
  -t -T     enable / disable pty allocation
  -1 -2     force use of particular protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for authentication
  -noagent  disable use of Pageant
  -agent    enable use of Pageant
  -m file   read remote command(s) from file
  -s        remote command is an SSH subsystem (SSH-2 only)
  -N        don't start a shell/command (SSH-2 only)
  -nc host:port
            open tunnel in place of session (SSH-2 only)

3

Có nếu bạn sử dụng ứng dụng khách putty ssh, bạn sẽ thấy bất kỳ đầu ra dòng lệnh nào mà tập lệnh của bạn sẽ tạo ra. Để lấy mã thoát sau khi tập lệnh chạy loại:

echo $?

1

Một cách khác để lấy tệp nhật ký trên máy tính windows của bạn là: - gắn Windows m / c trên hệ thống Unix (tùy theo hương vị của UNIX, có thể sử dụng máy chủ Samba) - chạy tập lệnh từ windows bằng bất kỳ máy khách từ xa nào - có tập lệnh đăng nhập vào thư mục được gắn

Bạn có thể thấy đầu ra trực tiếp nếu bạn nhận được đuôi tương đương UNIX cho Windows .


0

Thêm một câu trả lời:

Lưu tất cả các lệnh linux của bạn trong tệp cmdlist.txt và sử dụng lệnh dưới đây.

plink.exe -ssh -pw passwd uname@1.2.3.4 output.txt

passwd == mật khẩu để đăng nhập thiết bị

uname == tên người dùng để đăng nhập thiết bị

1.2.3.4 == địa chỉ IP của thiết bị

Sau khi lệnh này được thực thi, tất cả các lệnh cmdlist.txt của bạn sẽ được thực thi trên thiết bị từ xa và đầu ra được lưu trong tệp có tên output.txt

Đảm bảo giữ plink.exe và cmdlist.txt trong cùng thư mục và bạn đang trỏ dấu nhắc dos của mình vào cùng thư mục.

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.