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


44

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

これはssh(putty)を使用して可能ですか?または他の手段で?

ありがとう!

回答:


43

これは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

putty.exeでこれを行うことは可能ですか?つまり、デフォルトではなく、ターミナルをエミュレートする「通常の」CLIプログラムとして動作します。
クリスティディアコネスク

はい、Windows 2003システムにパテし、コマンドラインを実行しました。ホストには、システム管理ツールをサポートするためにHPバージョンのSSHサーバーがインストールされていました。SSHクライアントしかない場合、すべてがリモートシステムで実行されます。
kmarsh

1
これは、Windows以外のローカルマシンでも機能します。
シリ

バックスラッシュパスを除き、はい。
kmarsh

20

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

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

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

何よりも、これはsshtelnetで機能します

参考のために、これらは利用可能なオプションです:

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

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

echo $?

1

Windowsマシンでログファイルを取得する他の方法は次のとおりです。-UnixシステムにWindows m / cをマウントします(UNIXのフレーバーに応じて、Sambaサーバーを使用してこれを実行できます)-リモートクライアントを使用してWindowsからスクリプトを実行しますスクリプトはマウントされたディレクトリにログインします

UNIXでWindowsのtailに相当するものを取得すると、出力をライブで確認できます


0

もう一つの答え:

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

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

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

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

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

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

必ずplink.exeとcmdlist.txtを同じディレクトリに保存し、DOSプロンプトで同じディレクトリを指すようにしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.