Powershell – FTP List Parsing

Powershell 을 이용해 FTP Server를 상대로 자동화 작업을 하다보니 File 업로드, 다운로드 뿐 만 아니라. 특정 FTP 경로 아래에 있는 File 과 Directory 들의 정보가 필요 했다. 이때 FTP Server를 상대로 WebRequest를 보내는데 이때 Request Method를 “List”로 한다.

이전에 올린 포스트인 Get-WebResponseString 을 이용하여 List를 요청 해 보자.



참고 Get-WebResponseString

다음과 같은 결과가 나온다. 내가 타겟으로 하고 있는 FTP Server는 Ubuntu에 설치 되어 있는 vsFTPd 이다. 만약 다른 FTP Server라면 출력 포멧이 다를 수도 있다.

이 출력은 하나의 문자열이다. 이것을 Parsing 해야 원하는 정보로 정렬하고 사용 할 수 있다. 다음은 FTP List를 Parsing 하는 Function 인데 추출하는 Regex는 자신의 Server와 다를수 있으니 알맞게 수정 하도록 하자.

Convert-FtpList

임시 파일을 만들어 String을 File에 쓰고 Get-Content 의 출력을 Pipeline 으로 보내면 한줄씩 접근 할 수 있다. 한줄씩 접근 하기 위해 여러가지 방법이 있을 수 있지만 편한 방법으로 했다. (효율은 별로 좋지 못하다.)

한줄씩 접근하여 Regex로 값을 추출 해내고 그것을 Hash Table을 만든다. 이때 형 변환을 같이 하는데 DataTime 타입이 편리하게도 별다른 과정 없이 Parsing이 잘 되었다.

최종 출력은 HashTable을 Property로 옮기는 Custom PSObject 들이다. 이것으로 원하는 정보로 정렬 작업을 할 수 있게 되었다.

사용 예

출력은 다음과 같다. (Format-Table Type, LastWriteTime, Size, Name -AutoSize)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> 

This site uses Akismet to reduce spam. Learn how your comment data is processed.