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!

Cristi Diaconescu
sumber

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
kmarsh
sumber
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)
Cristi Diaconescu
sumber
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 $?
Menandai
sumber
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 .

James
sumber
0

Satu jawaban lagi:

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

plink.exe -ssh -pw passwd [email protected] 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.

manjesh23
sumber