web-dev-qa-db-ja.com

サーバーフォルダーをマウントせずに、Linux BashスクリプトからWindowsにファイルを転送することはできますか?

ローカルLinuxマシンからWindowsサーバーにファイルを転送するスクリプト(Bash)を書いています。 Windowsサーバーには通常 [〜#〜] samba [〜#〜] 共有を使用してアクセスでき、mount.cifsコマンドを使用してLinuxマシンにフォルダーをマウントできます。適切なWindows資格情報。

すべてのサーバーを事前にマウントしたり、Sudoを使用して動的にマウントしたりしたくないので(スクリプトはrootではなく通常のユーザーとして実行されます)、次のような別の方法でサーバーにアクセスできるかどうか疑問に思っています。 a [〜#〜] tcp [〜#〜] パイプまたは同様の方法。

たとえば、Windowsでは Net Use コマンドを使用してサーバーのフォルダをドライブ文字にマウントできますが、次のようにマウントする必要はありません。

c:> Net Use \\my-server.domain.com passwd123 /user:domain\myuser
c:> cp d:\myfiles.Zip \\my-server.domain.com\d$\temp\destination

そして、Net Useを作成すると、開いている接続が表示されます(文字が割り当てられていません)。

    Status       Local     Remote                    Network
-------------------------------------------------------------------------------
OK                     \\myserver.domain.net\IPC$
                                                Microsoft Windows Network
The command completed successfully.

Windowsサーバーにsshdもftpdもインストールしたくありません。 [〜#〜] smb [〜#〜] プロトコルでのみそれを行うことを探しています。フォールバックとして、ファイルのコピー後にSudo mount.cifs [options] /mnt/temp-folderおよびSudo umount /tmp/temp-folderのようなマウントを実行します。

5
рüффп

smbclientプログラムを使用すると、WindowsマシンにFTPをインストールしなくても、Windowsファイル共有へのFTPのようなインターフェイスを提供できます。

次にいくつかの例を示します。

ローカル(unix/linux)からWindowsにファイルを転送:

smbclient //server.domain.org/d$ <password> -W domain.org -U <my-user> -c "put file-local.xml folder1\folder2\file.xml"

WindowsからLinuxにファイルを転送:

2つのオプションがあります。1つ目はsmbclientを指定してコマンド 'get'を使用し、2つ目は最短のオプションです:smbget

1. smbclient: `smbclient //server.domain.org/d$ <password> -W domain.org -U <my-user> -c "get folder1\folder2\file.xml file-local.xml"`
2. smbget: `smbget -u <my-user> -p <password> -w domain.org -o destination-file.txt smb://server.domain.org/d$/folder1/folder2/source-file.txt`
13
John

wput [options] [file]... [url]... ftp://[username[:password]@]hostname[:port][/[path/][file]]wgetのようなものを試してみてください

2
quintablet