Jalankan skrip dari Unix, dapatkan output secara lokal?


45

Saya perlu menjalankan skrip (Tcl, atau apa pun) pada mesin Unix jarak jauh, dari shell perintah Windows (lokal), dan saya ingin stdout / stderr skrip muncul di CLI Windows. Kode keluar juga bermanfaat.

Apakah ini mungkin menggunakan ssh (dempul)? Atau dengan cara lain?

Terima kasih!

Jawaban:


44

Ini adalah standar untuk SSH. Jika Anda ingin mengarahkan output dari jarak jauh, letakkan simbol pengalihan (biasanya ">") di dalam kutipan perintah.

Sebagai contoh:

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

Untuk menghemat output secara lokal pada host Windows,

ssh remote_host "ls" > .\file_on_local_host.txt

Untuk menggabungkan stderr dari jarak jauh dan menyimpannya dan stdout secara lokal,

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

Apakah mungkin melakukan ini dengan putty.exe? Yaitu bekerja sebagai program CLI "normal" sebagai kebalikan dari default, yaitu meniru terminal.
Cristi Diaconescu

Saya telah dimasukkan ke dalam sistem Windows 2003 dan menjalankan baris perintah, ya. Tuan rumah telah menginstal server SSH versi HP untuk mendukung alat administrasi sistem mereka. Jika Anda hanya memiliki klien SSH daripada semuanya berjalan pada sistem jarak jauh.
kmarsh

1
Ini juga berfungsi untuk mesin lokal non-Windows.
shiri

Kecuali jalur backslash, ya.
kmarsh

20

Apa yang saya cari adalah tendangan samping dempul, plink.exe . Tidak seperti dempul, yang bertindak seperti emulator terminal, plinkbertindak seperti program CLI normal (non-interaktif).

Dengan menggunakannya, saya bisa melakukan ini cmd.exedan mendapatkan output perintah remote disimpan secara lokal.

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

Yang terbaik dari semuanya, ini berfungsi untuk ssh dan juga telnet !

Hanya untuk tujuan referensi, ini adalah opsi yang tersedia:

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

Ya jika Anda menggunakan klien dempul ssh Anda akan melihat output baris perintah apa pun yang akan dihasilkan skrip Anda. Untuk mendapatkan kode keluar setelah skrip berjalan ketik:

echo $?

1

Cara lain untuk mendapatkan file log di mesin windows Anda adalah: - me-mount Windows m / c pada sistem Unix (tergantung pada rasa UNIX, ini bisa dimungkinkan menggunakan server Samba) - jalankan skrip dari windows menggunakan klien remote apa saja - miliki skrip login ke direktori yang di-mount

Anda dapat melihat output langsung jika Anda mendapatkan setara UNIX dari ekor untuk Windows .


0

Satu jawaban lagi:

Simpan semua perintah linux Anda dalam file cmdlist.txt dan gunakan perintah di bawah ini.

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

passwd == kata sandi untuk login perangkat

uname == nama pengguna untuk login perangkat

1.2.3.4 == alamat IP perangkat

Setelah perintah ini dieksekusi, semua perintah cmdlist.txt Anda akan dieksekusi pada perangkat jarak jauh dan hasilnya disimpan dalam file yang disebut output.txt

Pastikan untuk menyimpan plink.exe dan cmdlist.txt di direktori yang sama dan Anda mengarahkan dos prompt Anda ke direktori yang sama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.