인터넷에서 많이 검색했지만 아직 유용한 정보를 찾을 수 없습니다. PFTP는 'IF'와 'WHILE'과 같은 루프를 실행할 수 없습니까?PSFTP가 루프를 실행할 수 있습니까?
만약 그렇다면 구문을 알고 싶습니다. 내 머리를 두드리는 시도가 있습니다. 귀찮게도, PuTTY는 이러한 명령을 허용하지만 psftp는 같은 제품군에 속해있는 것처럼 보이지 않습니다. 나는 이것에 대한 해결책이 정말로 있기를 바란다!
인터넷에서 많이 검색했지만 아직 유용한 정보를 찾을 수 없습니다. PFTP는 'IF'와 'WHILE'과 같은 루프를 실행할 수 없습니까?PSFTP가 루프를 실행할 수 있습니까?
만약 그렇다면 구문을 알고 싶습니다. 내 머리를 두드리는 시도가 있습니다. 귀찮게도, PuTTY는 이러한 명령을 허용하지만 psftp는 같은 제품군에 속해있는 것처럼 보이지 않습니다. 나는 이것에 대한 해결책이 정말로 있기를 바란다!
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를 실행하는 별도의 스크립팅 환경이 필요하다는 것입니다.
Thanks @JNevill! 이것은 정말 도움이됩니다, 나는 이것을 시험해보고 어떻게되는지 알려주고 어떤 문제에 직면하면 더 많은 도움을 청합니다. –
감사합니다. JNevill! 내가 직면 한 단 하나의 문제 - 사용자 이름 암호는 배치 파일 내에서 제공 될 수 없으며 배치 파일을 호출 할 때 명령 줄에서 개별적으로 수행해야합니다. 다음 코드를 사용했습니다 :'plink username @ host -pw password -m "C : \ PATH \ PlinkTest.bat"-v' –
또한 파일이 존재하면 원격 서버에서 로그 파일을 검색하려고합니다. 나는 다음 코드를 사용했다 :'if $ fileExists; "Q : \ PuTTY \ psftp cd/home/LOGS /" "Q : \ PuTTY \ psftp는 FileLog.log"를 얻지 만 작동하지 않습니다. 분명히 여기서 명령을 올바르게 전달하지는 않지만 올바른 구문이 무엇인지 알지 못합니다. 좀 도와 줄 수있어? 또한,이 재귀 적으로 호출 할 수있는 방법을 조언을주십시오, 파일이 존재하지 않는 경우 파일이 나타날 때까지 계속 확인한 다음 위와 같이 로그 파일을 다운로드 할 수 있습니까? –
no. psftp는 "프로그래밍 언어"가 아닙니다. 루프를 원할 경우, ELSE를 사용하고 다른 것을 사용하여 psftp에 명령을 보냅니다. –
감사합니다. @MarcB 의미가 있습니다. 그러나 나는 이것을 어떻게 달성 할 지 잘 모르겠습니다. while 루프를 사용하여 특정 파일이 원격 서버에서 삭제되었는지 여부를 확인하고 서버에서 로그 파일을 다운로드 한 경우 'while [! -f /tmp/foo.txt]; 수면 2; done get FileWriter1.log' –
다음 psftp를 사용하지 마십시오. sftp 연결을 지원하는 다른 언어를 사용하고 루핑을 수행하십시오. –