터미널에서 단일 라인 SFTP
하루에 여러 번 원격 서버의 로그 파일을 살펴 봐야하는 테스트를 실행할 수 있습니다. 터미널을 사용 sftp
하여 원격 서버에 접속하고 원하는 로그 파일을 /tmp
로컬 컴퓨터 로 가져 오는 데 익숙해졌습니다 .
man sftp
다음 명령을 기본적으로 한 줄로 실행하는 방법을 알아 내기 위해 오늘 사용하는 옵션을 살펴 보았으므로 명령을 입력하고 Enter 키를 누르고 명령을 입력하고 Enter를 누르는 등의 작업을 수행 할 필요가 없습니다.
(지금 내가하는 일)
sftp myuser@myserver
--mypassword at prompt
lcd /tmp
get /dir/dir/dir/dir/file
quit
이전에 사용하지 않은 man sftp
참고 자료를 살펴보면서 발견했습니다 scp
. 내가 찾고있는 것일 수 있다고 생각하지만 안전하게 복사 된 파일을 어디로 보낼지 지정하는 방법을 찾지 못했습니다.
누군가 /dir/file
원격 서버에서 다운로드하여 다운로드 할 수있는 방법을 제공 할 수 /tmp/file_plus-my-description
있습니까?
다음과 같은 일반 UNIX 복사본과 유사한 sftp 또는 scp 명령을 실행할 수 있기를 바랐습니다.
scp myuser@myserver /dir/file /tmp/file_plus-my-description
Terminal
Mac OS X 10.8에 내장 된 것을 사용하고 있습니다. 감사.
2017 년 9 월 업데이트-tl; dr
원격 ftp 서버에서 컴퓨터로 단일 파일을 다운로드 합니다.
sftp {user}@{host}:{remoteFileName} {localFileName}
컴퓨터에서 원격 FTP 서버로 단일 파일을 업로드 합니다.
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
원래 답변 :
좋아, 그래서 좀 멍청 해. 그러나 나는 그것을 알아 냈습니다. 나는 거의 다음과 같이 정상에 올랐다.
sftp user@host remoteFile localFile
터미널에 표시된 유일한 문서는 다음과 같습니다.
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
그러나 시놉시스 아래에 다음을 보여주는 이 사이트 를 발견 했습니다 .
sftp [-vC1 ] [-b batchfile ] [-o ssh_option ] [-s subsystem | sftp_server ] [-B buffer_size ] [-F ssh_config ] [-P sftp_server path ] [-R num_requests ] [-S program ] host
sftp [[user@]host[:file [file]]]
sftp [[user@]host[:dir[/]]]
따라서 간단한 대답은 :
사용자와 호스트 다음에 원격 파일과 로컬 파일 이름을 수행하는 것입니다. 놀랍도록 간단합니다!
한 줄, sftp 복사 원격 파일 :
sftp username@hostname:remoteFileName localFileName
sftp kyle@kylesserver:/tmp/myLogFile.log /tmp/fileNameToUseLocally.log
2016 년 2 월 업데이트
누군가가이 명령을 반대로 수행하고 한 줄 명령으로 로컬 컴퓨터에서 원격 서버로 파일을 푸시 하는 명령을 찾고 sftp
있다면 아래의 @Thariama 사용자가이를 수행하기위한 솔루션을 게시했습니다. 추가 코드에 대한 모자 팁.
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
단일 파일을 업로드하려면 bash 스크립트를 생성해야합니다. sshpass
설치 한 경우 다음과 같은 것이 OS X에서 작동합니다 .
용법:
sftpx <password> <user@hostname> <localfile> <remotefile>
이 스크립트를 경로 어딘가에 놓고 호출하십시오 sftpx
.
#!/bin/bash
export RND=`cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32`
export TMPDIR=/tmp/$RND
export FILENAME=$(basename "$4")
export DSTDIR=$(dirname "$4")
mkdir $TMPDIR
cp "$3" $TMPDIR/$FILENAME
export SSHPASS=$1
sshpass -e sftp -oBatchMode=no -b - $2 << !
lcd $TMPDIR
cd $DSTDIR
put $FILENAME
bye
!
rm $TMPDIR/$FILENAME
rmdir $TMPDIR
sftp는 배치 파일을 지원합니다.
man 페이지에서 :
-b batchfile
Batch mode reads a series of commands from an input batchfile instead of stdin.
Since it lacks user interaction it should be used in conjunction with non-interactive
authentication. A batchfile of `-' may be used to indicate standard input. sftp
will abort if any of the following commands fail: get, put, rename, ln, rm, mkdir,
chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink, and lmkdir. Termination
on error can be suppressed on a command by command basis by prefixing the command
with a `-' character (for example, -rm /tmp/blah*).
참고URL : https://stackoverflow.com/questions/16721891/single-line-sftp-from-terminal
'code' 카테고리의 다른 글
Pentaho 데이터 통합 SQL 연결 (0) | 2020.11.13 |
---|---|
Youtube Javascript API-관련 동영상 비활성화 (0) | 2020.11.13 |
React로 예쁜 인쇄 JSON (0) | 2020.11.13 |
입출력 매개 변수를 언제 사용합니까? (0) | 2020.11.13 |
JSON.stringify에 해당하는 jquery (0) | 2020.11.12 |