0

rsyncを使用して、LinuxボックスからWindowsボックスにファイルをプルするスクリプトがあります。私はそれを Windows サービスとして設計しましたが、そのビットはうまく動作しているようです。rsync および ssh 実行可能ファイルが起動し、Linux マシンに接続し、キーを使用して認証しますが、ファイルはコピーしません。Windows サービスのほとんどを除いた、スクリプトのコアは次のとおりです。

import subprocess
RSYNCPULL = '''"C:\\Program Files\\cwRsync\\bin\\rsync.exe" --remove-source-files
           --no-motd -e "\'C:\\Program Files\\cwRsync\\bin\\ssh.exe\'"
           user@IP:/var/log/* /cygdrive/c/logs/'''

class LogCopy( win32serviceutil.ServiceFramework ):
   #various functions for starting/stopping the service
    def sleep( self, sec ):
        win32api.Sleep( sec*1000, True )
    def start( self ):
        self.runflag = True
        while self.runflag:
            subprocess.call( RSYNCPULL )
            self.sleep( 10 )  

if __name__ == "__main__":
    qin32serviceutil.HandleCommandLine( LogCopy )   
4

2 に答える 2

0

「*」文字は、Windowsシェルによって解釈され、展開される可能性があります。次のいずれかを試してください。

  • 「*」の前に円記号を付けます。そうすれば、rsyncは接続の反対側であなたのためにそれを拡張します
  • 「*」を削除してから、rsyncの-rオプションを使用して、ディレクトリの再帰コピーを実行します
于 2012-12-11T19:45:03.077 に答える
0

それが何であるかを発見しました。システムとしてタスクを実行していました。管理者アカウントでsshキーをセットアップしましたが、システムではセットアップしませんでした。そのため、鍵を保存するプロンプトで ssh がハングしていました。

于 2012-12-12T20:45:56.740 に答える