Uzaktan Unix komut dosyasını çalıştırın, yerel olarak çıktı alınsın mı?


44

Uzak bir Unix makinesinde (yerel) bir Windows komut kabuğundan bir (Tcl veya her neyse) komut dosyasını çalıştırmam gerekiyor ve komut dosyasının stdout / stderr'inin Windows CLI'da görünmesini istiyorum. Çıkış kodu da faydalı olacaktır.

Bu ssh (macun) kullanarak mümkün mü? Veya başka bir yöntemle?

Teşekkürler!

Yanıtlar:


43

SSH için varsayılan budur. Çıktıyı uzaktan yönlendirmek istiyorsanız, yönlendirme sembolünü (genellikle ">") komut tırnaklarının içine koyun.

Örneğin:

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

Çıktıyı yerel olarak Windows ana bilgisayarında kaydetmek için,

ssh remote_host "ls" > .\file_on_local_host.txt

Stderr'i uzaktan birleştirmek ve kaydetmek ve yerel olarak stdout yapmak,

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

Bunu putty.exe ile yapmak mümkün mü? Bir terminali taklit edecek varsayılanın tersine, "normal" bir CLI programı olarak çalışıyoruz.
Cristi Diaconescu

Bir Windows 2003 sistemine girdim ve komut satırını çalıştırdım, evet. Ana sistem, sistem yönetim araçlarını desteklemek için HP'nin SSH sunucusu versiyonunu kurdu. Uzaktaki sistemde çalışan her şeyden yalnızca bir SSH istemciniz varsa.
kmarsh

1
Bu, Windows olmayan bir yerel makine için de geçerlidir.
shiri

Ters eğik çizgi dışında, evet.
kmarsh

20

Aradığım şey macunun tekmesi, plink.exe . Bir terminal emülatörü gibi davranan macunun aksine, plinknormal (etkileşimli olmayan) bir CLI programı gibi davranır.

Bunu kullanarak, bunu yapabilir cmd.exeve uzaktaki komutun yerel olarak kaydedilmesini sağlayabilirim.

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

Hepsinden iyisi, bu ssh hem de telnet için çalışıyor !

Sadece referans amaçlı olarak, mevcut seçenekler şunlardır:

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

Evet, eğer macun ssh istemcisini kullanırsanız, betiğinizin üreteceği herhangi bir komut satırı çıktısını göreceksiniz. Komut dosyası çalıştırıldıktan sonra çıkış kodunu almak için:

echo $?

1

Günlük dosyasını Windows makinenize getirmenin başka bir yolu da: - Windows m / c'yi Unix sistemine monte etmek (UNIX'in tadına bağlı olarak, bu Samba sunucusunu kullanarak mümkün olabilir) - komut dosyasını herhangi bir uzak istemciyi kullanarak pencerelerden çalıştırmak komut dosyası günlüğüne monte edilmiş dizine

Windows için UNIX kuyruk eşdeğeri elde ederseniz çıkışın canlı olduğunu görebilirsiniz .


0

Bir cevap daha:

Tüm linux komutlarınızı cmdlist.txt dosyasına kaydedin ve aşağıdaki komutu kullanın.

plink.exe -ssh -pw şifresi uname@1.2.3.4 output.txt

passwd == cihaz girişi için şifre

uname == cihaz girişi için kullanıcı adı

1.2.3.4 == cihazın IP adresi

Bu komut çalıştırıldıktan sonra, tüm cmdlist.txt komutlarınız uzak cihazda çalıştırılacak ve çıkış output.txt adlı dosyaya kaydedilecektir.

Plink.exe ve cmdlist.txt dosyasını aynı dizinde tuttuğunuzdan ve dos isteminizi aynı dizine yönlendirdiğinizden emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.