code

터미널에서 단일 라인 SFTP

codestyles 2020. 11. 13. 08:12
반응형

터미널에서 단일 라인 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

TerminalMac 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

반응형