5

コンピューターのディレクトリからリモート サーバーのディレクトリに .png ファイルを転送したいと考えています。

ファイルと転送モードを保護するには、SFTP を使用する必要があります。そして、通常モードでファイルをコピーするための UNIX スクリプト (.ksh) ファイルが既にあります。SFTP モードで転送を実装するにはどうすればよいですか?

4

2 に答える 2

12

.kshスクリプトsftpで使用しているコマンドの代わりに使用します。参照については、 sftp manを参照してください。

scpまた、 secure copy- scp manも参照してください。

編集

sftp主にインタラクティブな操作用です。接続先のホストを指定する必要があります。

sftp example.com

ユーザー名とパスワードの入力を求められ、インタラクティブ セッションが開始されます。

スクリプトで使用できますが、 のscp方がはるかに簡単に使用できます。

scp /path/to/localfile user@host:/path/to/dest

パスワードの入力を求められます..

編集 2

との両方scpを基になるプロトコルとしてsftp使用します。これこれを参照してくださいssh

スクリプトから実行するように設定する最善の方法は、キーを使用してパスワードなしの認証を設定することです。これこれを参照してください。私はこれをサーバーで広く使用しています..キーをセットアップした後、実行できます

scp -i private-key-file /path/to/local/file user@host:/path/to/remote

sftp -oIdentityFile=private-key-file -b batch-file user@host

パスワードで認証したい場合は、expectパッケージを試してみてください。最も単純なスクリプトは次のようになります。

#!/usr/bin/expect
spawn sftp -b batch-file user@host
expect "*?assword:*"
send "pasword\n"
interact

詳細については、これこれ、およびこれを参照してください。

于 2013-04-04T10:25:07.147 に答える
2

1 行で sftp を介してコマンドを送信します。

ファイルを作成し、my_batch_file として保存します。

cd /root
get blah.txt
bye

これを実行して、バッチ ファイルを実行します。

eric@dev /home/el $ sftp root@10.30.25.15 < my_batch_file
Connecting to 10.30.25.15...
Password:
sftp> cd /root
sftp> get blah.txt
Fetching /root/blah.txt to blah.txt
sftp> bye

ファイルが転送されます

これによりblah.txt、リモートコンピューターからローカルコンピューターに移動しました。

パスワードを指定したくない場合は、次のようにします。

Bash スクリプトからパスワードを指定して sftp コマンドを実行するには?

または、ハックで安全でない方法で実行したい場合は、bash を使用して次のことを期待します。

#!/bin/bash
expect -c "
spawn sftp username@your_host
expect \"Password\"
send \"your_password_here\r\"
interact "

プロンプトが受け取るものと一致するように、'Password' の文言を小文字の 'p' に変更して、expect をインストールする必要がある場合があります。ここでの問題は、パスワードがファイルとコマンド履歴に平文で公開されることです。これは、そもそもパスワードを持つという目的をほぼ無効にします。

于 2014-11-11T19:36:07.760 に答える