FTPログインを繰り返し入力する必要がないようにスクリプトを作成する方法はありますか?

FTPログインを繰り返し入力する必要がないようにスクリプトを作成する方法はありますか?

私は最近FTP接続を介してリモートシステムで広く作業してきましたが、セッションが短すぎるため、ローカルコンピュータで作業を完了したときに頻繁に再ログインする必要があるため、カスタムコマンド/シェルスクリプトFTPサーバーにログインするには1つの単語が必要ですが、問題はこれをどのように行うのでしょうか。

例えば

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

答え1

通常、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おそらくFTPもサポートしません。しかし、試してみることはできます(たとえば、次のように)。FTP-SSL)接続を保護する必要がある場合。

リモートFTP

一般的なコマンドの1つに代わるものは、次のものを使用することftpです。lftp、自動ログイン、コマンド実行など、さまざまな機能を提供するためです。

例:

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

この例ではSFTP標準サポートされていないサーバーOpenSSH SFTPクライアント

このオプションは、-elftpに起動時にコマンドを実行し、対話型を維持するように指示します。

これらの lftp スクリプトは他のスクリプトを取得することも、サーバーから自動的に切断することもできます。

対照的に、with-cまたは-flftp は、引数で指定されたコマンドを実行するか、指定されたファイルから読み取った直後に終了します。

答え2

すべてをスクリプト化するには:

#!/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

また、見ることができますこのページ

答え3

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

キーを使用してSSHなどのセキュリティ方法を使用できない場合は、次の方法でFTP情報を構成できます。このガイド

関連情報