アプリ版:「スタンプのみでお礼する」機能のリリースについて

レンタルサーバーのOSの細かい情報を得るCGIプログラムってなんの関数なりモジュールなりを呼べば良いのでしょうか?
環境変数とかだと、漠然と「UNIX」とかいう役に立たない情報が返ってくるだけなのですが、細かく知るときには、どうかくもんなんでしょう?

C/C++もしくは、Perlでお願いします。

A 回答 (8件)

レンタルサーバの「OS」の詳細(Linux、FreeBSD、etc)を知るのはかなり難しいと思います。


レンタルサーバの「Webサーバソフト」であれば、HTTPヘッダのServer:(=環境変数のSERVER_SOFTWARE)でかなり詳細な情報が手に入りますが。

ただdmesgが使えるのであれば、Perlで

open( MES, "dmesg |" );
$dmesg = <MES>;
close( MES );

とでもすれば、dmesgコマンドの出力が$dmesgに入りますから、それを解析するというのも手ですが、書式は当然OSによって異なりますし、解析はかなり大変だと思います。
    • good
    • 0

kokucho81さんの、


>このときに、必要なのがOSの分類とバージョン
>(バージョンに関しては一致していなくても別に良い訳ですが…)です。
という記事を読む限り、OSのバージョンは不詳でも、種類がわかれば。。とのことですので、以下のサイトでチェックしてみてはいかがでしょう。
通りすがりのサイト管理者ですが、はずしていたらごめんなさいm(_ _)m

参考URL:http://uptime.netcraft.com/up/graph/
    • good
    • 0
この回答へのお礼

貴重な情報ありがとうございます。
そうですね。外部より、環境変数を得ているし、OSの分類もわかりますので、簡易的に調べたり、CGIも置けないところで調べる分には良さそうですね。

無料ホームページリンク集作成組がおりますので、このページの利用を伝えておきます。

ありがとうございました。

お礼日時:2001/04/14 18:47

元の話に戻れば、シェル環境が使えず、CGIからdmesgやunameなどのOSコマンドを呼び出せないという前提であれば、CGIだけでOSの詳細バージョンやプロセッサタイプを知るのは無理でしょう。



私なんかは、そもそも無料サーバでそういう高度なプログラムを動かそう、というのはあまりにも虫の良すぎる考えではないか、と思ってるんですが…。

この回答への補足

「虫がよい話しだ」と言われれば「ぐむぅ」という感じなのですが、
まぁ、でも個人の楽しみでやるWEBサイトってそんなもんじゃないですか。

金をかけて満足してやれる環境も一つは欲しいけれど、
それとは別に、金をかけないでやって「つついている(何を?)」
状況を楽しむ側面もあるわけで、、、
(うぅ、徐々に本音がマズイですね。。。)

とりあえず、C系の sys/utsname.h で対応・・・ってそれって結局 uname 呼び出しかい!っていうツッコミはありますです。ハイ(反省)

perlはやっぱり無理っぽいですね~ こっそりunameもろ呼び出すしか…
unameだったらバレても許してくれるかな(きっと)。。。

PHPは phpinfo() で情報を得れるみたいです。
まぁ、どこまでがコマンド呼んでいることになり、どこからはプログラム側で処理したことになるのか、疑問ですが、この当たりでダマしダマしうまい具合にやるしかなさそうですね。

補足日時:2001/04/14 18:17
    • good
    • 0

binary packageを利用するという話であれば、確かにソースのコンパイルよりは制限は緩くなるでしょうが、実際に利用するにはOSのバージョンだけでなく使用されているCPU種別がわからないと無理ですし、BSD系OSのpackageやLinuxのrpmなどはroot権限を持っていないと事実上インストールは困難ですから(しかもpackageやrpm同士の依存関係もある)、やはりOSのバージョンを判別するだけでは、全く無意味とは言いませんが、多くの場合はあまり意味を持たないと思います。



それに、そこまでおっしゃるなら、なぜ「管理者に対象となるライブラリやソフトの組み込みを依頼する」という選択肢が出てこないのでしょうか?
おそらくおっしゃられている内容はレンタルサーバの運営サイドの想定範囲を明らかに超えている内容でしょう(でなければmakeを制限したりしないはず)。
もし本当にそのプログラムが必要だということが管理者に理解されれば、管理者側でインストールを行ってもらえる可能性だって決して低くはないと思いますし。管理者としても、ユーザが無理矢理インストールした不安定なプログラムを使われてサーバ全体の運用に支障をきたすよりは、自分で安定版をインストールしてユーザに提供する方を選ぶでしょう。

また、同じレンタルサーバでもHDDスペース借りではなくサーバ1台を丸ごと借りる方法だってありますし、最近はまるごとサーバ借りの値段もだいぶ安くなってきましたから、そんなに自分でインストールすることにこだわるのであれば、そういったタイプのレンタルサーバに移行することを考えた方がいいのではないかと思いますが。

この回答への補足

おっしゃるまでもなく私も基本的にはまず、一度管理者に依頼しています。
それに実は私自信ががレンタルしているメインサーバーは有料であり、設備も充実しているので、問題はないのです。

でも、同時に、そのような行動や環境を他の人にも適応できるとは考えていないわけで。。。
また、その環境を前提に『こういうツールがある』と解説してもあまり意味がないわけで。。。。

また、おっしゃるように、管理人がすぐ動いてくれれば良いですが、確かに今までの実際の体験上、有料サービスのの管理人は、すぐ動きます。
何か入れてくれ!といえば、大抵24時間以内にインストールされます。
しかし、無料の方の管理人は、そうそうは承諾しないです。
(というか個別の要望には対応しないものです。『検討する』とだけ言ったっきりですね。)

ましてやその無料会員が5万人を超えていると、まず承諾しないと言って良いです。

どうも話しがずれてしまっているのですが、是々非々を問うているのではなく、
OSの種類とバージョンを入手するという方法はどうするのか?
ということなのですが…

補足日時:2001/04/14 04:23
    • good
    • 0

OSにインストールされるライブラリ構成は、同じOSのバージョンでもインストール構成によって大幅に異なりますから、OSのバージョンを調べたところでお考えのようなことはおそらく無理だと思いますが。



例えばFreeBSDだと、インストール時の選択によってはa.out形式のバイナリ(2.2.xまでの形式)を受け付けず、ELFバイナリ(3.0以降の実行形式)しか実行できない構成も選べますし、またGNU系のライブラリはportsなどで追加インストールが必要になる場合も多いですが、これらの情報はOSのバージョン番号では判別できません。
そうなると個別にインストールされているライブラリをチェックして手動でコンパイルして行くしかないわけですが、これは対象となるOSに精通していないとまず困難な作業です。またこれらのライブラリ情報を一括して取得できるような機能も普通OSには付いていなかったはずです。

LinuxでもkernelのバージョンとlibcのバージョンぐらいはDistribution名とバージョンで判別できますが、それ以外のライブラリ構成となるとやはりインストール時の選択で大幅に変わってきてしまうことを考えると、そもそもmakeが提供されていない環境でC/C++のCGIを動かそうという考え自体が無理があると思います。

この回答への補足

ご指摘おそれいります。

でも、やはり、TELNETを提供しているところで、MAKEを提供しているところは少ないです。(普通に考えてもユーザー数を多く抱えるところは、MAKEコマンドの一般への提供は怖くてできないと思います。)

現実、ほとんどのレンタルサーバーの状況がそうなのですから、『考え自体に無理がある』とおっしゃられても解決の方向になってないわけでして…

与えられた情況下で少しでも良い方向へ持っていけるように模索しているわけです。

例えば、FLYなども、普通はMAKEファイルがないと組み込めませんが、OSを調べることによって、バイナリファイルを落としてきて、サーバーに組み込めます。

GDライブラリなどもコンパイル済みのものがあれば、組み込める可能性が高いと思います。でも、ソースからの組み込みとなると、おそらく違反を犯す(呼び出しを許されていないコマンドを呼び出す)しない限りは無理だと思います。

OSを知っても完全な情報が得られるわけではないですが、大きな指針には必ずなるはずです。
だって情報として意味がないのでしたら、ここ教えてGOOなどでも、『使用しているOS』を書いてください!とは補足しないはずですよね!

補足日時:2001/04/14 02:44
    • good
    • 0

なぜOSの詳細バージョンが必要なのかがわからないんですが。


何か調査でもされてるんですか?
    • good
    • 0

逆にOSやバージョンによって変えなきゃいけないことって


あるんですかね?

OSによって 動いたり動かなかったりするのであれば
いくつかの動作検証パターンを作ってしまえば
OS バージョンの特定できるんじゃないですかね?

はずしてるかな

この回答への補足

たびたび返答ありがとうございます。

具体的には、C/C++系のCGIや組み込みプログラムがそれに該当します。
一般的に、C/C++系のプログラムはある程度規模が大きくなると、普通はmakefileを使用しますが、一般的にレンタルサーバーのTELNETではMAKEコマンドは開放されていませんので、makefileでMAKEすることはできません。

では、makefile内を手作業でやれば良いではないか?と思うかもしれませんが、
大抵のmakefileでは、TELNETで提供されているコマンド外のコマンドが
呼び出されている行があり、結局はそのような場合は、既成のコンパイル
済みのバイナリファイルを探すことになります。

このときに、必要なのがOSの分類とバージョン
(バージョンに関しては一致していなくても別に良い訳ですが…)です。

このとき、管理人の方に聞けば良いのですが、できればサクッと調べられると
長い目で見たときには管理人さんの手間も省けるのでありがたいのです。
(又、今後CGIが使用可能なレンタルサーバーのリンク集
などを作られる方なども、OSの分類とそのバージョンまでのっていれば、
レンタルスペースでありながら、とても強力なアプリケーションが
インストールできる可能性も広がってくるため、いままでの容量や回線、サポート
といった視点だけではない、新しい視点によるサーバー選びの芽が出てくる
と思ってもいます。)

補足日時:2001/04/14 01:55
    • good
    • 0

漠然としてますので何が知りたいかを


書いたほうがいいと思います。<OSの細かい情報

uname -a でOS周りの情報は帰ってきますが、

この回答への補足

普通にUNIXをユーザーとして使用していれば、確かにそうなのですが。。。

WEBページ作成のために、サーバーをレンタルする環境で、
TELNETは開放されてはいますが、普通コマンドは限られています。
CGI/SSIが使用可能ですが、OSコマンドをCGI経由で呼ぶのは禁止されています。
普通はレンタルサーバーはこういう環境ですよね。

このような環境で、OSのバージョンを正確に知らなければならないのです。
いままで管理人に直接聞くようにしてきたのですが。。。

補足日時:2001/04/14 01:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!