コンピューターのディレクトリからリモート サーバーのディレクトリに .png ファイルを転送したいと考えています。
ファイルと転送モードを保護するには、SFTP を使用する必要があります。そして、通常モードでファイルをコピーするための UNIX スクリプト (.ksh) ファイルが既にあります。SFTP モードで転送を実装するにはどうすればよいですか?
コンピューターのディレクトリからリモート サーバーのディレクトリに .png ファイルを転送したいと考えています。
ファイルと転送モードを保護するには、SFTP を使用する必要があります。そして、通常モードでファイルをコピーするための UNIX スクリプト (.ksh) ファイルが既にあります。SFTP モードで転送を実装するにはどうすればよいですか?
.kshスクリプトsftp
で使用しているコマンドの代わりに使用します。参照については、 sftp manを参照してください。
scp
また、 secure copy- scp manも参照してください。
sftp
主にインタラクティブな操作用です。接続先のホストを指定する必要があります。
sftp example.com
ユーザー名とパスワードの入力を求められ、インタラクティブ セッションが開始されます。
スクリプトで使用できますが、 のscp
方がはるかに簡単に使用できます。
scp /path/to/localfile user@host:/path/to/dest
パスワードの入力を求められます..
との両方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
ファイルを作成し、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 をインストールする必要がある場合があります。ここでの問題は、パスワードがファイルとコマンド履歴に平文で公開されることです。これは、そもそもパスワードを持つという目的をほぼ無効にします。