한 줄에서 FTP 명령을 어떻게 실행합니까?


18

이것은 FTP에 로그인 할 때 수행하는 작업입니다.

ftp user:password@server
ftp: user:password@server: Unknown host
ftp> echo HELLO WORLD!
ftp> quit

한 줄 FTP 명령을 수행하고 싶습니다 ...

ftp user:password@server -command "echo HELLO WORLD"

또는

"echo HELLO WORLD" | ftp user:password@server 

내가 만들려고하는 스크립트의 일부와 비슷한 것. 아무것도 전송되지 않습니다. 몇 가지 지침 만 에코하면됩니다. 이것이 두 시스템간에 가장 쉬운 방법입니다.


1
잠깐, FTP는 그렇지 않습니다 ! FTP는 파일 전송 프로토콜을 나타냅니다. SSH가 필요합니다.
nickguletskii

손톱을 운전해야 할 때 다리미판 만 있으면됩니다. Telnet을 시도하고 있지만 FTP가 작동합니다. 두 번째 시스템의 제한적인 제어 및 기능 ... FTP 에코는 "Ironing board"인 경우에도 작동합니다.
WernerCD

글쎄, 그것은 나를 위해 작동하지 않았다 ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii

1
ftpecho명령 이 없습니다 . lftp하지만, 그것은 순전히 지역적이므로, 왜 당신이 스스로 그 일을하고 싶은지
모르겠습니다

@nickguletskii 그래 ... 내가 잘못하고있는 것에 대한 답을 얻으려고했습니다 (아마도 더 명확했을 수 있습니다). Charles는 저에게 도움이되는 답변을 가지고 있습니다 (내가 얻은 cli-php 솔루션 외에도).
WernerCD

답변:


20

그것은 실제로 SSH에 대한 더 많은 일이지만 (다른 사람들이 지적했듯이) ftp를 사용하기로 결정했다면 lftp를 사용해보십시오 . 현재 지원되는 모든 Ubuntu 버전에서 무료로 사용할 수 있습니다. 다음 명령으로 설치할 수 있습니다 sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

lftp -c는 명령을 실행 한 다음 종료 되는 스위치를 문서화 하지만 대부분의 배포판에서 손상된 것으로 보입니다. -e를 발행하지 않으면 연결 상태를 유지합니다 quit.


1
Eeeeew ... 일반 텍스트 암호 ...
nickguletskii

-c우분투에서 나에게 잘 작동합니다.
poolie

2
명령 행에 비밀번호를 입력 할 필요가 없습니다. 좋은 옵션 중 하나는 비밀번호를 입력하고 ~/.netrcmode인지 확인하는 것 0600입니다. FTP는 유선에서 일반 텍스트가 아닌 암호를 협상 할 수 있습니다.
poolie

작동합니다! 대박. 예. "좋은"솔루션은 아니지만 두 번째 컴퓨터에는 옵션이 제한되어 있으므로 추악하지만 FTP는 작동합니다.
WernerCD

19

단일 ftp 명령 으로이 컴퓨터에서 ftp 서버로 파일 전송을 실행하는 방법을 검색 할 때이 스레드를 찾았습니다. 방법은 다음과 같습니다.

ftp 명령으로 파일을 작성하십시오 ( 'ftpcommands.txt'라고 함).

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

그런 다음 ftp 명령을 실행하고 파일을 공급하십시오.

 ftp -n < ftpcommands.txt

-n 옵션은 'open'명령을받을 때 ftp가 자동으로 로그인을 시도하지 않도록합니다.

누군가에게 도움이 되길 바랍니다. 이 솔루션에 대한 온라인 내용을 찾을 수 없었으므로 직접 해결해야했습니다.


참고 : 파일 전송이 "200"응답으로 실패하면 파일 전송 직전에 "수동"명령을 추가하여 수동 모드로 들어가십시오.
Nick Zinger

2

원격으로 명령을 실행하기 위해 FTP를 사용할 수 없습니다. 파일 전송 프로토콜을 나타냅니다. 실제로 필요한 것은 SSH입니다.

ssh두 시스템에 패키지 를 설치 한 후이 안내서 에 따라 비밀번호없이 로그인을 설정하기 만하면됩니다.

그리고 지금 그것을 부르는 방법 :

ssh username@host echo "Hello World\!"

예를 들어, 이것은 나 자신에게하는 일입니다.

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!

두 번째 시스템에는 SSH가 없습니다. 실제로 FTP_RAW를 통해 PHP에서 작동하는 것이 있지만 특정 시점 에서이 작업을 수행 할 수 없는지 볼 수 있습니다.
WernerCD

1

@charlesbridge 답변을 보완하려면 ~ / .bashrc 파일에 다음을 포함하십시오.

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

파일을 소싱하십시오.

source ~/.bashrc

이제 "yoursite"라는 별칭을 사용하여 원하는만큼 명령을 로그온하고 실행하십시오.


0

다음을 사용하여 busybox를 설치하십시오.

apt-get install busybox

busybox는 Linux 또는 임베디드 시스템에서 모두 작동 한 다음 ftpget 및 ftpput을 사용할 수 있습니다

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

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