web-dev-qa-db-ja.com

ftpログインを実行するスクリプトを作成する方法はありますか?これで、何度も入力する必要はありませんか?

私は最近、FTP接続を介してリモートシステムで広範囲に作業しています。セッション時間が非常に短いため、ローカルマシンで作業を終了するときに頻繁に再ログインする必要があるため、カスタムコマンドを作成する方法が必要です/ 1つの単語だけでFTPサーバーにログインするためのシェルスクリプトですが、問題はその方法です。

例えば.

~$ ftp domainname.com
 ...
 Name (domainname.com): MyName
 ...
 Password: xxxx
 ...
 ftp>
6
Rn2dy

通常、ftpコマンドラインクライアントは構成ファイル~/.netrcをサポートしており、リモートシステムの認証情報を構成できます。例:

machine legacy.system.example.org
login juser
password keins

ftp legacy.system.example.orgを使用すると、この情報を再入力する必要がなくなります。

さらに自動化する必要がある場合は、パイプラインコマンドを使用してftpをスクリプト化できます。例:

$ cat pushit.sh
# complex logic to set
# EXAMPLE_FILE=
ftp <<EOF
Prompt
mput $EXAMPLE_FILE
quit
EOF

もちろん、システムがsshをサポートしていない場合は、ftpsもサポートしていない可能性があります。ただし、接続を保護する必要がある場合は、(たとえば ftp-ssl を使用して)試すことができます。

LFTP

単純なftpコマンドの1つに代わるものは、自動ログインとコマンド実行にいくつかの機能を提供するため、 lftp を使用することです。

例:

$ lftp -e 'source ~/login.lftp'
$ cat login.lftp
open sftp://juser:[email protected]
cd /path/to/favorite/dir

この例は、標準の OpenSSH sftpクライアント でサポートされていない [〜#〜] sftp [〜#〜] サーバーへの自動パスワード認証を示しています。

オプション-eは、起動時にコマンドを実行し、インタラクティブな状態を保つようにlftpに指示します。

もちろん、そのようなlftpスクリプトマッハは他のスクリプトも供給し、サーバーから自動的に切断します。

対照的に、-cまたは-fを使用すると、lftpは、引数として指定されたコマンドの実行後、または指定されたファイルからの読み取り後に直接終了します。

8
maxschlepzig

すべてをスクリプト化したい場合:

#!/bin/sh
Host='ftp.example.com'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'

ftp -n $Host <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0

このWebページ も参照してください。

3
Bruce Ediger

自動的にログインしたい場合は、.netrcファイル。安全ではないプレーンテキストでユーザー名とパスワードを保存する必要があるため、これはお勧めしません。 sshを使用できる場合は、認証キーと一緒に使用して自動的にログインすることをお勧めします。

キーでsshなどの安全な方法を使用できない場合は、 このガイド に従ってFTP情報を構成できます。

2
sbtkd85