2016-10-28 10 views
0

인터넷에서 많이 검색했지만 아직 유용한 정보를 찾을 수 없습니다. PFTP는 'IF'와 'WHILE'과 같은 루프를 실행할 수 없습니까?PSFTP가 루프를 실행할 수 있습니까?

만약 그렇다면 구문을 알고 싶습니다. 내 머리를 두드리는 시도가 있습니다. 귀찮게도, PuTTY는 이러한 명령을 허용하지만 psftp는 같은 제품군에 속해있는 것처럼 보이지 않습니다. 나는 이것에 대한 해결책이 정말로 있기를 바란다!

+0

no. psftp는 "프로그래밍 언어"가 아닙니다. 루프를 원할 경우, ELSE를 사용하고 다른 것을 사용하여 psftp에 명령을 보냅니다. –

+0

감사합니다. @MarcB 의미가 있습니다. 그러나 나는 이것을 어떻게 달성 할 지 잘 모르겠습니다. while 루프를 사용하여 특정 파일이 원격 서버에서 삭제되었는지 여부를 확인하고 서버에서 로그 파일을 다운로드 한 경우 'while [! -f /tmp/foo.txt]; 수면 2; done get FileWriter1.log' –

+0

다음 psftp를 사용하지 마십시오. sftp 연결을 지원하는 다른 언어를 사용하고 루핑을 수행하십시오. –

답변

0

PSFTP는 (는) 언어가 아닙니다. SFTP 클라이언트 일뿐입니다. SFTP 자체는 컴퓨터간에 파일을 이동시키기위한 프로토콜 일뿐입니다. 원격 컴퓨터에 SFTP를 설치 한 경우 SSH를 실행 중이라고 제안합니다 (SFTP는 일반적으로 SSH 서버 설치와 함께 번들로 제공되기 때문에).

예를 들어 파일이 원격 서버에 있는지 확인하기 위해 bash 쉘 스크립트에서 테스트를 수행 한 다음 결과에 따라 psftp 명령을 실행할 수 있습니다. 다음과 같음 :

루프 또는 whatevs로 전체 엉망으로 붙일 수 있습니다. 여기서 일어나는 일은 실행을 위해 원격 컴퓨터에 명령 test -f /tmp/foo && echo 'true' || echo 'false'을 전송하는 것입니다. 명령의 표준 출력이 리턴되어 변수 fileExists에 저장됩니다. 그런 다음 테스트합니다.

창에 있다면 일괄 처리 스크립트로 변환하고 plink.exe를 사용하여 kind of like they do here 명령을 보낼 수 있습니다. 또는 SSH 및 SFTP 클라이언트를 사용하여 cygwin을 컴퓨터에 올려 놓고 위의 내용을 사용하십시오.

여기서 중요한 것은 루프를 수행하고 테스트를 기반으로 psftp를 실행하는 별도의 스크립팅 환경이 필요하다는 것입니다.

+0

Thanks @JNevill! 이것은 정말 도움이됩니다, 나는 이것을 시험해보고 어떻게되는지 알려주고 어떤 문제에 직면하면 더 많은 도움을 청합니다. –

+0

감사합니다. JNevill! 내가 직면 한 단 하나의 문제 - 사용자 이름 암호는 배치 파일 내에서 제공 될 수 없으며 배치 파일을 호출 할 때 명령 줄에서 개별적으로 수행해야합니다. 다음 코드를 사용했습니다 :'plink username @ host -pw password -m "C : \ PATH \ PlinkTest.bat"-v' –

+0

또한 파일이 존재하면 원격 서버에서 로그 파일을 검색하려고합니다. 나는 다음 코드를 사용했다 :'if $ fileExists; "Q : \ PuTTY \ psftp cd/home/LOGS /" "Q : \ PuTTY \ psftp는 FileLog.log"를 얻지 만 작동하지 않습니다. 분명히 여기서 명령을 올바르게 전달하지는 않지만 올바른 구문이 무엇인지 알지 못합니다. 좀 도와 줄 수있어? 또한,이 재귀 적으로 호출 할 수있는 방법을 조언을주십시오, 파일이 존재하지 않는 경우 파일이 나타날 때까지 계속 확인한 다음 위와 같이 로그 파일을 다운로드 할 수 있습니까? –