scp가 원하는 대로 작동하도록 만들기(원격 파일 복사 프로그램)

scp가 원하는 대로 작동하도록 만들기(원격 파일 복사 프로그램)

을 사용하여 로컬 파일을 원격 서버에 복사하고 싶습니다 scp.

scp -rp local-file my.server.com:/tmp/

가끔 원격 서버에서 파일을 복사할 위치를 지정하는 것을 잊어버릴 때가 있습니다.

scp -rp local-file my.server.com

:아니면 때로는 잘못 입력하기도 합니다 ;.

scp -rp local-file my.server.com;/tmp/

두 경우 모두 scp실패해야 합니다. 그러나 그 대신 완전히 어리석게 행동하고 로컬 파일을 로컬로 복사합니다 cp.

cp local-file my.server.com

심지어 그렇다고 man scp말했다 . 그러면 왜 자동으로 실패하고 이와 같이 동작합니까 ?scpremote file copy programcp

이 문제에 대한 해결책이 있습니까?

내 버전 openssh-client1:6.0p1-4+deb7u6

답변1

Bash에서는 이와 같은 래퍼 함수를 ​​작성할 수 있습니다.

function scp { 
  if grep -q ':[^ $]' <<< "$*" ; then
    command "${FUNCNAME[0]}" "$@"
  else
    echo "missing or invalid hostname:path in scp command"
    return 1
  fi
}

여기에 매우 조잡한 예가 있습니다. 명령줄에 공백이 아닌 문자가 하나 이상 있는지 확인하는 것뿐입니다 :(이것은 개념 증명 예에는 충분하지만 실제 사용에는 충분하지 않습니다). 있는 경우 scp명령을 실행합니다. 그렇지 않은 경우 오류 메시지를 인쇄하고 종료 코드 1을 반환합니다.

또는 스크립트를 작성할 수도 있습니다. 어느 쪽이든 차이는 없습니다.

그건 그렇고, 위에서 "in bash"라고 말했는데, 그 이유는 위의 기능을 bash에서만 테스트했기 때문입니다. 이것은 bash만이 이것을 할 수 있다는 것을 의미하지는 않습니다. 대부분의 다른 sh 구현을 사용하면 동일하거나 유사한 작업을 수행할 수 있습니다. 구문은 약간 다를 수 있으며 command scp ...보다 일반적인 구문 대신 하드코딩해야 할 수도 있습니다 command "${FUNCNAME[0]} ...".

추신: 나는 scp가 이것을 "해야" 하는지 판단하지 않습니다. 자신의 시스템을 결정하는 것은 귀하에게 달려 있습니다. 그러나 모든 맞춤형 해킹/목발 없이 시스템에서 작업해야 할 때 그러한 것에 의존하는 것은 심각한 불이익을 초래합니다.

답변2

짧은 대답은 할 수 없다는 것입니다.

man scp원격 호스트는 선택 사항으로 언급됩니다 .

scp(scp 옵션 제거됨) [[user@]host1:]file1 ... [[user@]host2:]file2

이제 명령을 실행하면

scp arg1 arg2

scp:또는를 조사 하여 arg1원격 호스트가 어디에 있는지 결정 합니다 arg2(두 개의 원격 호스트(solaris, ubuntu)를 허용할 수도 있지만 항상 그런 것은 아닙니다).

arg1, arg2콜론 이 모두 없으면 scp을 누르세요 cp.

답변3

다른 답변 외에도 scp별도의 프로토콜이 아니라는 점에 유의하시기 바랍니다그 자체하지만 암호화되지 않은 것이 아닌 전송 rcp용으로 오래된 것입니다 . 이는 드롭인 교체용으로 고안되었으며, 스크립트가 있거나 없는 모든 것을 변경 없이 더 안전한 것으로 교체할 수 있습니다 . 구문 분석을 허용 합니다 .sshTCPrcpscprcp:

답변4

원격 파일 복사 프로그램이라고는 하지만 원격 요구뿐만 아니라 로컬 복사 요구도 처리할 수 있도록 설계된 것 같습니다. 이 동작은 테스트할 때 내 환경에도 반영되었습니다.

로컬로 실행한 후 환경 변수 $?에서 값을 검색할 때 반환 코드 0이 관찰되었다는 점도 주목할 가치가 있습니다. 이는 예상대로 작동하고 오류 코드가 출력되지 않음을 보여줍니다.

불행하게도 이 기본 동작을 해결할 수 있는 방법이 있는지 확실하지 않습니다. 다른 도구를 사용하는 것이 유일한 선택일 수 있습니다.

관련 정보