ファイルを Unix ドライブから Windows ドライブにコピーするスクリプトを作成する方法はありますか?
4 に答える
セキュア コピー ( SCP )を使用して、常に手動で行っています。SCP は、ほとんどの Unix マシンに既にインストールされています。私の PC には、Windows 用のセキュア ターミナル アプリであり、セキュア コピー ユーティリティも含まれて いるPuTTYをインストールしました。
Windows コマンド ラインから手動でセキュア コピーを実行する場合、Unix ユーザー名をコマンド ライン コマンドに入力しますが、プロンプトでパスワードを入力する必要があるため、対話型です。しかし、スクリプトまたはバッチ ファイルから実行することも考えました。その場合、適切なマシンに秘密鍵と公開鍵を作成してインストールする必要があります。適切なキーを作成し、Windows と Unix の両方のマシンにインストールした後、Windows コマンド ラインのセキュア コピーを手動で再度実行しましたが、そのときはパスワードを要求されませんでした。したがって、これはタスクを達成するための 1 つの方法です。他にもたくさんの方法があると思いますが。
あなたは Samba タグを持っているので、ネットワーク共有を Unix マシンから Windows マシンにマウントすることについて話しているのですか?
その場合、それは通常のネットワーク ドライブのように扱われ、共有を介してアクセス許可があれば何でもコピーできます。
はい、スクリプトが実行されているオペレーティング システムが Unix ドライブから読み取り、Windows ドライブに書き込むことができる限り。これは vbscript とタグ付けされているので、Windows で実行していると仮定します。Windows用の Unix ファイルシステムにアクセスするには、このようなものを調べる必要があります (ただし、これは Linux ext ドライバーです)。次に、標準のコピー機能を実行してタスクを完了します。
私はexpectツールを使用します。
アップロード方法の例を次に示します。
/local/path/to/file
に
\\HOST\SHARE\remote\path\to\file
domain\user
パスワードを使用して認証するpassword
:
expect <<<EOF
set timeout 10
spawn smbclient //HOST/SHARE "-Udomain\\user%password"
expect {
"smb: \\\\\\\\>" {
send "cd /remote/path/to\r"
expect {
"NT_STATUS_OBJECT_NAME_NOT_FOUND" {exit 1}
"smb: *>" {
set timeout -1
send "put /local/path/to/file file\r"
expect {
"putting file " {
expect "smb: *>" {exit 0}
}
"smb: *>" {exit 1}
}
}
}
}
}
# Timeout
exit 1
EOF