2

plinkリモートでシェルスクリプトを実行するために使用していMachineBます。そして、シェルスクリプトはにありMachineA(Windows Box)ます。

C:\PLINK>plink uname@MachineB -m test.sh 
Using keyboard-interactive authentication. 
Password: 
Using keyboard-interactive authentication. 
Your Kerberos password will expire in 73 days. 

そして、そのシェルスクリプトはtext file(aa.txt)MachineBで出力を生成し、それはに保存されます/export/home/uname/aa.txt

だから私の質問は-スクリプトがを使用してすべてのタスクを完了したらすぐにaa.txt fileからMachineBをコピーできる方法はありますか?または、これらすべてをWindowsバッチファイルに入れる必要がありますか?MachineAssh

したがって、問題ステートメントは次のようになります-

  1. MachineBからシェルスクリプトを実行しますMachineA
  2. 次に、シェルスクリプトがタスクを完了するのを待ちます。私の場合は、出力をテキストファイルに書き込みます。
  3. そして、シェルスクリプトがすべてのタスクを完了した後、それはtxtファイルへのすべての書き込みを完了したことを意味し、次にそのtxtファイルをMachineAからにコピーします。MachineB

上記のシナリオをどのように達成できるかについての提案はありますか?

アップデート:-

したがって、これがtest.shシェルスクリプトファイルのコンテンツであり、スクリプトの最後にpscpを追加した後も、次のようになりますか?

#!/bin/bash 
export HIVE_OPTS="$HIVE_OPTS -hiveconf mapred.job.queue.name=hdmi-technology" 
hive -S -e 'SELECT count(*) from testingtable2' > aa.txt 
pscp uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt

したがって、上記のスクリプトでハイブクエリを実行しており、その出力はファイルに保存されaa.txtています。クエリが完了して出力がaa.txtファイルに保存されるとすぐに、 fourth line of pscpaa.txtファイルがローカルWindowsマシンに転送されます。ドキュメントフォルダ内。私は正しいですか?これがプロセス全体になりますか?

そして、上記のプロセスが私が理解している限り正しい場合は、Windowsのcmdプロンプトに移動して、以下のように実行すると、まったく同じプロセスが実行されます。右?

C:\PLINK>plink uname@MachineB -m test.sh 
Using keyboard-interactive authentication. 
Password: 
Using keyboard-interactive authentication. 
Your Kerberos password will expire in 73 days. 

再度更新:-

だから私はbatファイルを作成する必要があり、これが以下のファイルであると仮定すると、そのファイルtest.batのコンテンツは次のようになります-test.bat

plink uname@MachineB -m test.sh 
pscp  uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt
4

2 に答える 2

1

scp実行後にファイルをダウンロードするために使用できます。Windowsマシンでwinsshdをセットアップappendし、test.shファイルでコピーコマンドをセットアップした場合:

scp /export/home/uname/aa.txt user@windowsmachine.com:/homedir

ファイルは完了後に転送されます。

同様に、 WindowsマシンでpscpのようなWindows scpクライアントを使用でき、Linuxマシンからファイルをプルできます。

pscp uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt

したがって、Windowsマシンでは、バッチスクリプトを使用します。

plink uname@MachineB -m test.sh 
pscp  uname@MachineB:/export/home/uname/aa.txt c:\documents\foo.txt
于 2012-07-27T03:40:10.000 に答える
0

すでに述べたことに加えて、私は非常によく似たものを実行しており、次の形式を使用しています(バッチスクリプトから)。

plink -ssh user @ -pw password -m yourScript.sh

pscp -sftp -pw password user @ IP-Address:/ path / to / remote / file C:\ path \ to \ local \ save \ directory

その2番目のコマンドは1行にありますが、ここではそのようにレンダリングされない場合があります。もちろん、IPアドレス、ユーザー、パスワードをログインに適した値に置き換えてください:-)

お役に立てば幸いです。

編集-申し訳ありませんが、この正確な答えがすでに与えられていることに気づきまし。称賛!

于 2012-08-01T20:22:11.307 に答える