Linux サーバーで実行する C プログラムを作成する必要があります。Oracle データベースから情報を取得し、ローカル ファイルを作成してから、そのファイルを Windows サーバーにコピーします。Linux サーバーでローカル ファイルを作成する方法を知っています。しかし、CからWindowsサーバーにコピーする方法は何ですか?
7 に答える
最初にWindowsShareをマウントしてから、マウントされたディレクトリにファイルを作成します。
2 台のマシン間の接続の種類と、達成する必要があるセキュリティのレベルによって異なります。
最も単純なシナリオは、2 台のマシンが同じ LAN 上にあり、特定のセキュリティがない場合です。この場合、考えられる解決策は次のとおりです。
Samba : Win マシンでディレクトリを共有し、Linux ボックスに Samba をインストール/構成します。C プログラムは、共有ディスクを特定のパス (例: /win/share) の下のローカル ディスクとして認識します。
NFS : または、NFS を使用して Linux 上のディレクトリをエクスポートし、Windows マシンに NFS 製品をインストール/構成することもできます。何らかの理由 (セキュリティ/認証など) で Samba を使用できない場合、これを 2 番目のオプションと考えています。
ftp : Windows マシンに ftp サーバーが必要です。また、C プログラムを介してファイルをコピーするのも面倒です。Linux の ftp クライアントは対話型であり、スクリプト (または別のプログラム) で使用することは想定されていませんが、確認する必要があります。
http : Windows マシン上の http サーバーと、アップロードを許可するページ (IIS といくつかの ASP ページで十分) が必要であり、libcurlを使用してそれと対話します。
セキュリティが重要な場合のより複雑なシナリオでは、scp または sftp over と SSL 接続を使用する必要があります。また、https を使用した libcurl で十分な解決策が得られる可能性があります。
私のアドバイスは、最初に Samba を試して、ニーズを満たすかどうかを確認することです。他のすべてのオプションでは、プログラマーとしてさらに多くの作業が必要になります。
おそらく、単に smbclient を使用できますか? サーバーなどをセットアップする必要はありません。サーバー上に何らかの共有ドライブを用意するだけです。
smbclient //myserver/my_directory <password> -U [domain/]<my_user>
次に、Linuxボックスの現在のディレクトリとWindowsサーバーの間で、好きなファイルを「配置」および「取得」するだけです。
put my_file_to_copy.dat
それはそれについてです。
はい - 必要なネットワーク ファイル システム (Samba など) を使用して Windows ボックスをマウントし、通常の IO プリミティブを使用してそのディレクトリにファイルをコピーするだけです。
マーク
またはFTPを使用します。LinuxCコードにリンクできるFTPライブラリはたくさんあります。
Windowsマシンは、最初にこの動作を受け入れる手段を提供する必要があります(FTPが思い浮かびます)。Windowsマシンで実行してファイルを受け入れるアプリケーションを開発することもできますが、すでに開発されているアプリケーションの1つを使用する方が簡単です。
filezillaはその一例です。
実際の質問、ファイルのアップロード方法については、どのftpクライアントでもうまくいきます。
SMTP を使用してメールで送信するのはどうですか?