로컬 컴퓨터에서 셸 스크립트를 사용하여 원격 컴퓨터에서 명령을 실행 한 다음 로컬 컴퓨터에서 계속


10

문제는 이것입니다 : 원격 컴퓨터에서 파일을 복사하고 싶습니다.

원격 서버에서 연결을 끊고 로컬 컴퓨터 내에서 scp를 사용하여 원격 컴퓨터에 연결하고 저장된 파일의 위치를 ​​얻는 쉘 스크립트를 작성하는 방법을 찾고 있습니다. 파일을 복사하십시오.

특히 스크립트에서 어떻게 원격 컴퓨터에 연결하고 해당 컴퓨터에서 작업을 수행하는지 알고 싶습니다. 연결을 끊고 로컬로 계속 실행하십시오.

답변:


15

해결책 1 :

remote_output="$(ssh user@host "remote command")"
scp "user@$host:$remote_output" /local/path

이것은 원격 시스템에 연결하고 일부 명령을 실행하며 출력을 로컬 시스템의 변수에 복사하여 작동합니다. 파일 경로를 원격으로 에코하여 로컬로 캡처한다고 가정 해보십시오.

해결책 2 :

ssh user@host "determine_path; cat filename" >local_filename

원격에서 직접 파일을 찾아서 출력하고 로컬로 파일로 리디렉션하여 작동합니다. 이것은 scp를 건너 뜁니다. "cat"이전 단계에는 출력이 없어야합니다 (&> / dev / null로 해결할 수 있음).


1
별도의 ssh + scp 대신 하나의 연결로 전체 문제를 해결하는 방법을 보여주는 +1
Peter Cordes

모든 답변이 도움이되지만 이것은 가장 구체적으로 내 문제를 해결합니다
gnsr

20

다음 형식으로 스크립트를 작성할 수 있습니다.

command1
command2
...
ssh user@machine command3
...
command4
command5

command3비밀번호를 묻지 않고 실행 하려면 SSH 키를 설정해야 합니다.


2
이것은 동기식 일 것입니다. 하지만 ssh user@remote command3실행되고 command4시작할 수 없습니다
AAAAA 모니카 복원 말한다

3
@aaaaaa 당신이하지 않았다면ssh user@machine command3 &
Isaac

3
예 @Isaac, 제 요점은 하나가으로 바람직 행동이 될 수 있지만, 그것은 의식이 결정해야한다는 것입니다
AAAAA는 분석 재개 모니카 말한다

2

복사하려는 파일을 식별하는 방법과이 식별을 수행하는 원격 시스템에서 실행될 스크립트 또는 명령 세트를 작성할 수 있거나 이미 가지고 있다는 것을 이미 알고 있다고 가정합니다. .

또한 해당 명령이 표준 출력에서 ​​파일에 대한 전체 경로 또는 파일에 대한 상대 경로를 복사에 사용되는 SSH 사용자의 홈 디렉토리와 관련하여 인쇄한다고 가정합니다. 필자의 예제에서 스크립트 이름은 "getfilepath.sh"이지만 쉘 스크립트 일 필요는 없지만 다른 실행 파일이거나 일련의 명령 일 수도 있습니다.

# Script to be executed on local machine.

# put any leading local commands here.

FILE=$(ssh user@emote getfilepath.sh);
scp user@remotehost:"$FILE" .

# put any trailing local commands here.

위 코드에서 "$ ()"표기법은 명령의 표준 출력을 쉘 변수로 캡처하는 방법입니다. 상당히 표준 적이지만, 이해하지 못하는 쉘을 사용하는 경우, 대부분의 미국 키보드에서 1 키 왼쪽의 악센트 표시 인 "백 틱"으로 명령을 둘러 쌀 수 있습니다.


0

모든 작업을 수행하는 원격 시스템에서 예약 된 작업을 트리거 할 수 있습니다.

이렇게하면 복사하려는 파일의 위치를 ​​검색하는 동안 원격 시스템에 연결되지 않을 수 있습니다.

나는 이것을하고있다 :

comand 줄은 내 경우에 배치 스크립트를 실행하는 예약 된 작업을 트리거합니다.

schtasks /run /s remoteserver /u %user% /p %password% /tn "scheduledtaskname"

친애하는

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.