私は最近、FTP接続を介してリモートシステムで広範囲に作業しています。セッション時間が非常に短いため、ローカルマシンで作業を終了するときに頻繁に再ログインする必要があるため、カスタムコマンドを作成する方法が必要です/ 1つの単語だけでFTPサーバーにログインするためのシェルスクリプトですが、問題はその方法です。
例えば.
~$ ftp domainname.com
...
Name (domainname.com): MyName
...
Password: xxxx
...
ftp>
通常、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 を使用して)試すことができます。
単純な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は、引数として指定されたコマンドの実行後、または指定されたファイルからの読み取り後に直接終了します。
すべてをスクリプト化したい場合:
#!/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ページ も参照してください。
自動的にログインしたい場合は、.netrc
ファイル。安全ではないプレーンテキストでユーザー名とパスワードを保存する必要があるため、これはお勧めしません。 sshを使用できる場合は、認証キーと一緒に使用して自動的にログインすることをお勧めします。
キーでsshなどの安全な方法を使用できない場合は、 このガイド に従ってFTP情報を構成できます。