0

Linux ベースのサーバーから Windows PC にファイルをコピーしようとしています。コピーしたいファイルはすぐに利用できません。つまり、パテで次のコマンドを実行する必要があります

tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print $5 $13}' |sed 's/\"//g' | uniq | sort -n |uniq >> myfile.txt

データを myfile に移動します。これで、30 分ごとに myfile をサーバーから PC に移動する必要があります。pscpでコードを実行できました

pscp -pw PASS user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfolder

ファイルをPCに移動するためですが、自動的に実行する必要があります。また、「myfile」は 30 分ごとに自動的に更新する必要があります。

`

4

1 に答える 1

0

これを実現する方法は多数あります。個人的には、Windows PC に SSH サーバー (FreeSSHd http://www.freesshd.com/など) をセットアップして、Linux サーバーを使用してすべてをワンステップで実行できるようにします。PC にソフトウェアをインストールできない場合でも、Windows PC と Linux サーバーの両方でスクリプトをスケジュールすることにより、これを機能させることができます。

まず、Windows PC から Linux サーバーに接続するための SSH 公開鍵認証を構成します。 これは、スクリプトでクリア テキストのパスワードを使用するよりも安全な代替手段であり、スケジュールされたタスクのより適切な構成です。

Windows PC で次の手順を実行します。

  1. PuTTYgen 鍵生成ユーティリティを開く
  2. 「パラメーター」で「SSH-2 RSA」を選択し、ビット数をデフォルトの 1024 のままにします。
  3. 「アクション」の下で「生成」をクリックし、プロンプトが表示されたらカーソルを動かします
  4. 30 分ごとにパスフレーズを入力せずにプロセスを自動化するため、「キー パスフレーズ」は空白のままにします。
  5. [アクション] で [公開鍵を保存] をクリックし、鍵のファイル名と場所を指定します。
  6. [アクション] で [秘密鍵を保存] をクリックし、[ファイルの種類] が [PuTTY 秘密鍵ファイル (*.ppk)] に設定されていることを確認します。
  7. 手順 5 で保存した公開鍵を開き (非常に重要 - 秘密鍵ではなく、公開鍵であることを確認してください)、内容をクリップボードにコピーします。

Linux サーバーで次の手順を実行します。

  1. Linux サーバーに ssh 接続し、好みのエディターを使用して ~/.ssh/authorized_keys ファイルを開きます。存在しない場合は、これらのコマンドを実行する必要がある場合があります

    mkdir -p ~/.ssh
    touch ~/.ssh/authorized_keys
    vi ~/.ssh/authorized_keys
    
  2. Windows 公開鍵の内容をこのファイルに貼り付け、ファイルを保存して閉じます。

次に、Linux サーバーでスケジュールされたタスクを作成して、「myfile」を 30 分ごとに更新します。

  1. テキスト エディタを開き、スクリプトの内容を「vi update_myfile.sh」などのファイルに配置します。

    #!/bin/bash
    tail -n 100000 conveyor2.log | grep -P 'curingresult OK' | sed 's/FT\ /FT/g' |awk '{print $5 $13}' |sed 's/\"//g' | uniq | sort -n | uniq >> /var/mp/95910/log/myfile.txt
    

(必要に応じてパスを編集します)

  1. cron を使用して、30 分ごと (毎時 15 分および 45 分) に実行するようにタスクをスケジュールします。コマンド「crontab -e」を実行し、必要に応じてパスを変更して次の行を追加します。

    15,45 * * * * /home/<username>/update_myfile.sh
    

最後に、Windows PC でスクリプトを作成して、Linux スクリプトの実行時からオフセットした時間にファイルをコピーします。

  1. メモ帳で、以下を含む copy_myfile.bat というスクリプトを作成します。

    pscp user@IPADDRESS:/var/mp/95910/log/myfile.txt C:\Users\Administrator\Desktop\Myfo
    
  2. PC で実行している Windows のバージョンについては言及していませんが、Windows 7 の場合は、[スタート] をクリックし、[コントロール パネル] で [システムとセキュリティ]、[管理ツール]、[タスク スケジューラ] の順にクリックします。Windows 8 の場合は、[スタート] をクリックし、「タスク スケジューラ」と入力します。

  3. タスク スケジューラ内で、[アクション]、[タスクの作成] の順にクリックすると、[タスクの作成] ダイアログが表示されます。

  4. [全般] タブで、タスクに名前と説明を付けます。

  5. [トリガー] で [新規] をクリックし、表示されるダイアログで [毎日] を選択し、[タスクの繰り返し] チェックボックスをクリックして [30 分] を選択し、[OK] をクリックします。

  6. [アクション] で [新規] をクリックし、[アクション] を [プログラムの開始] のままにして、手順 1 で作成した copy_myfile.bat スクリプトを参照します。[OK] をクリックします。

  7. [OK] をクリックすると、タスクが自動的に実行されるようにスケジュールされます。

したがって、Linux サーバー ファイルは :15 と :45 ごとに更新され、:00 と :30 ごとに Windows PC にコピーされます。これらの時間は、必要に応じて調整できます。2 つのシステムのクロックが同期している場合、15 分間の小刻みな余裕は必要ないかもしれません。

お役に立てれば!

于 2015-07-25T02:20:53.013 に答える