“scp”처럼 원격“ls”를 수행하는 방법이 원격 복사를 수행합니까?


55

표준 리눅스 쉘에서 "scp"와 같은 원격 "ls"를 수행하는 방법이 있습니까?


이 작업을 수행하는 것이 좋지만 SSH를 사용하여 LS를 수행하는 이유는 무엇입니까?
SpacemanSpiff

@SpacemanSpiff-스크립팅 할 수 있습니다. 이것이 내가이 페이지에 도착한 방법입니다.
wobbily_col

답변:


75

당신은 항상 이것을 할 수 있습니다 :

ssh user@host ls -l /some/directory

호스트에 SSH를 연결하고 ls를 실행하고 출력을 다시 덤프하고 즉시 연결을 끊습니다.


2
... 실제 쉘 액세스 권한이있는 경우. 일부 시스템에는 특정 쉘 scprsync호출 만 허용하는 특수 쉘이 sftp있습니다.
glglgl

"rls"에 어떻게 별칭을 지정 하시겠습니까?
고양이 고양이 Walrus

2
@WalrustheCat alias rls="ssh user@host ls -l"셸을 다시 시작 rls /some/directory하면 작동합니다.
chishaku

이것에 대한 유일한 문제는 파일을 찾을 수 없다는 것이 오류 코드를 반환한다는 것입니다. 내 이유가 정확하게 ls를 호출하려는 이유입니다.
Steve Cohen

@SteveCohen 님을 팔로우하지 않습니다 원격 ls에서 오류 코드를 원하십니까? 그렇다면 $? 명령을 실행 한 직후에 포함합니다. (예 : 찾을 수없는 파일에서 [로컬 또는 원격으로] 실행하면 2를 반환합니다)
Corey S.

11

디렉토리의 모든 파일을 나열하려면 다음을 수행하십시오.

rsync host.name.com:directory/path/'*'

find directory / path -ls와 같은 것

rsync -r host.name.com:directory/path

rsync가 호스트에 설치되어 있지 않으면 다음과 같은 결과가 나타납니다 bash: rsync: command not found. 이것이 백그라운드에서 SSH를 사용하고 있음을 의미한다고 생각합니까?
mwfearnley

형식은와 유사합니다 ls -l. 내 시스템에서는 파일을 나열하는 옵션이없는 것 같습니다.
조나단

6

그들이 원격 파일을 나열하는 방법을 찾고 있지만 ssh (백업 서버의 일반적인 경우)를 통해 원격 서버에 액세스 할 수 없기 때문에 Google을 통해이 질문에 오는 모든 경우 'sftp'를 사용할 수 있습니다.

예:

sftp username@hostname.xyz
ls
cd somedir
exit

특정 원격 디렉토리에서 대화식 세션을 시작하십시오.

sftp [user@]host[:dir]

3

예. SSH와 ls:

ssh host ls /path

보다 유연하게 스크립트를 작성하거나 host : path 구문에서 scp사용할 수 있습니다.


1

가장 많이 사용하는 방법은 ls 결과, 모든 권한과 날짜가없는 간단한 파일 목록을 가져 와서 로컬 파일에 보관하는 것입니다.

{ ssh me@host.com "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

따옴표 내에서 원하는 것을 실행할 수 있습니다. 모든 출력은 로컬 텍스트 파일로 끝납니다. 또는 서버에서 큰 불쾌한 스크립트를 실행하고 모든 출력, 심지어 오류를 캡처하려는 경우 :

{ ssh me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

1
두 번째 코드 줄 { }에는 필요하지 않습니다.
glglgl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.