wget과 scp를 파이프로 사용할 수 있나요? 서버에서 파일을 가져와서 다른 서버에 복사하고 싶습니다. 다음 명령을 사용했지만 작동하지 않습니다.
wget "$Select_Release_Version_ARTIFACT_URL" | sudo scp [email protected]:/etc/test/
답변1
파이프에서 사용하려면 파일에 쓰는 대신 wget
쓰는지 확인해야 하므로 .stdout
wget -O- ...
scp
AFAIK, 에서 복사를 사용할 수 없습니다 stdin
. 그러나 대신 을 사용하여 에서 읽는 ssh
유사한 명령을 실행하도록 할 수 있습니다 .cat
stdin
그래서 함께 당신은 다음과 같은 것을 얻을 것입니다
wget -O- "$Select_Release_Version_ARTIFACT_URL" | ssh [email protected] 'cat > /etc/test/some_file'
개별 파일/웹페이지만 다운로드 및 전송된다는 점에 유의하세요. 또한 사용자에게는 생성 및 쓰기 권한이 test
필요합니다 . before를 사용하면 원격 사용자에게 추가 권한이 부여되지 않습니다. 로컬 시스템에서 루트의 SSH 키에 대한 액세스를 허용하므로, 그럴 의도라면 그대로 유지하세요.192.168.94.137
/etc/test/some_file
sudo
ssh
test
이는 파이프를 사용하는 방법을 보여주지만 , 이를 수행할 수 없는 이유가 없는 한 ssh
원격 시스템에서 수행하는 것이 더 쉬울 것입니다 .wget
답변2
파이프 대신 사용할 수 있습니다 &&
. 이렇게 하면 scp
실행 시 wget
종료 상태가 0(성공적으로 완료됨)이 됩니다 .
wget "$Select_Release_Version_ARTIFACT_URL" && sudo scp "$Select_Release_Version_ARTIFACT_URL"[이메일 보호됨]:/etc/test/
작동 방식은 다음과 같습니다.
wget
파일을 다운로드하고 성공하면 시작됩니다 scp
.
참고: 를 사용하고 있으므로 sudo
이 명령을 실행할 때마다 사용자 비밀번호를 묻는 메시지가 표시됩니다.test