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 )