0

RHEL5 では、デフォルトの RubySocket::gethostnameはドメイン名のない短いホスト名を返します。RHEL6 では、ドメイン名を含むホスト名を返します。

これは、RHEL6 の異なるシステムhostname機能が原因で発生します。この機能は、SH スクリプトで修正できますhostname -sSocket::gethostnameRubyでそれを修正するパラメータはありますか?

正規表現またはシステム コールなどを使用して出力を解析することで修正できます'hostname -s'.stripが、どちらも簡単でも適切な解決策でもありません。

手伝ってくれる?

ありがとうヤン

4

2 に答える 2

0

rubydocの+click-to-toggle-source でわかるように、gethostnameは への単純なラッパーc stdlibです。

とはいえ、以下のコードをコンパイルして実行してみてください。あなたが望むものではないものを返すとすぐに、あなたはおそらくhostname -s.

#include <unistd.h>
#include <stdio.h>

int main(int, char **) {
  char buf[1025];
  gethostname(buf, 1024);

  printf("%s\n", buf);
}
于 2015-04-28T15:07:52.413 に答える
0

正規表現を使用して、最初の「。」までのすべてを返すことができます。

require 'socket'
hostname = Socket.gethostname[/^[^.]+/]
于 2015-10-23T05:34:51.350 に答える