私は最近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クライアント。
このオプションは、-e
lftpに起動時にコマンドを実行し、対話型を維持するように指示します。
これらの lftp スクリプトは他のスクリプトを取得することも、サーバーから自動的に切断することもできます。
対照的に、with-c
または-f
lftp は、引数で指定されたコマンドを実行するか、指定されたファイルから読み取った直後に終了します。
答え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情報を構成できます。このガイド。