web-dev-qa-db-ja.com

Unixでリモートでスクリプトを実行し、ローカルに出力を取得しますか?

(ローカルの)Windowsコマンドシェルから(Tclなど)スクリプトをリモートのUnixマシンで実行する必要があります。また、スクリプトの標準出力/標準エラー出力をWindows CLIに表示する必要があります。終了コードも役に立ちます。

これはssh(PuTTY)を使って可能ですか?それとも他の方法で?

ありがとうございます。

42

私が探していたのは、PuTTYのサイドキック、plink.exeです。端末エミュレータのように機能するPuTTYとは異なり、plinkは通常の(非対話型の)CLIプログラムのように機能します。

それを使って、私はこれをcmd.exeで行い、リモートコマンド出力をローカルに保存することができます。

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

とりわけ、これはsshおよびtelnetに有効です。

参考までに、これらは利用可能なオプションです。

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)
20

これはSSHのデフォルトです。出力をリモートでリダイレクトしたい場合は、コマンド引用符の中にリダイレクト記号(通常は ">")を入れてください。

例えば:

ssh remote_Host "ls > /tmp/file_on_remote_Host.txt"

Windowsホスト上でローカルに出力を保存するには、

ssh remote_Host "ls" > .\file_on_local_Host.txt

Stderrをリモートで組み合わせて保存し、ローカルでstdoutするには、

ssh remote_Host "ls 2>&1" > .\combined_output_on_local_Host.txt
40
kmarsh

はい、PuTTY sshクライアントを使用している場合は、スクリプトが生成するコマンドライン出力が表示されます。スクリプトの実行後に終了コードを取得するには、次のように入力します。

echo $?
3
Mark

あなたのWindowsマシン上でログファイルを取得する他の方法は以下の通りです。 - UNIXシステムにWindows m/cをマウントします(UNIXの種類によっては、これはSambaサーバを使用することで可能です)。マウントされたディレクトリへのスクリプトログイン

UNIXの Windows と同等のtailを使用すると、出力がライブで表示されます。

1
James

もう一つの答え:

すべてのLinuxコマンドをcmdlist.txtファイルに保存して、以下のコマンドを使用します。

plink.exe -ssh -pw passwd [email protected] output.txt

passwd==デバイスログイン用のパスワード

uname==デバイスログイン用のユーザー名

1.2.3.4==デバイスのIPアドレス

このコマンドが実行されると、すべてのcmdlist.txtコマンドがリモートデバイス上で実行され、出力はoutput.txtというファイルに保存されます。

必ずplink.exeとcmdlist.txtを同じディレクトリに保存してください。DOSプロンプトを同じディレクトリに向けてください。

0
manjesh23