dicom ファイルを NAS から scp で取得 – python

NAS からあるディレクトリごとローカルに scp でコピーします。
NAS の DICOM ディレクトリのパーミッションを「777」にしておく必要があります。
そうしないとダウンロードもできず、削除もできません。

paramiko と scp のインストール


pip install paramiko
pip install scp

python コード


import pydicom
import os
import paramiko
import scp

class Dicom:
    
    def __init__( self ):
        self.NASfrom = '192.168.0.21'
        self.portFrom = 22
        self.dtemp = '/var/www/html/dtemp'
        self.uNamefrom = 'heno' 
        self.pWordfrom = 'moheno'
        self.delDir(self.dtemp)

    @classmethod         
    def delDir( self, dir ):
      for root, dirs, files in os.walk(dir, topdown=False):
          for name in files:
              os.remove(os.path.join(root, name))
          for name in dirs:
              os.rmdir(os.path.join(root, name))
            
    def scp_get( self, searchDir ): 
        with paramiko.SSHClient() as ssh:
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(hostname=self.NASfrom, port=self.portFrom, username=self.uNamefrom, password=self.pWordfrom)            
            with scp.SCPClient(ssh.get_transport()) as scpc:                              
                scpc.get( remote_path = searchDir, local_path = self.dtemp, recursive = True)

if __name__ == "__main__":
    dcm = Dicom()
    dcm.scp_get( '/volume1/DICOM/2017/12/11')