ローカル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
のようなマウントを実行します。
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`
wput [options] [file]... [url]... ftp://[username[:password]@]hostname[:port][/[path/][file]]
やwget
のようなものを試してみてください