0

私は pgScript を使用しており、データベースが存在するサーバーに関する情報を取得する必要があります。IP アドレスとポートを取得できることはわかっていますが、サーバーのホスト名が必要です。現在私は持っています:

declare @machineName;
declare @I;
set @I = 0;
create temp table foo (t text);
copy foo from '/etc/hosts';
set @machineName = 
    select * from foo;
print @machineName;
set @machineNameCount = select count(*) from foo;

私は戻ってきます:

("127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4")
("::1         localhost localhost.localdomain localhost6 localhost6.localdomain6")
("xx.xx.x.xx  HOSTNAME")

この場合、作業する行が 3 つあることがわかっているので、@machineNameCount を使用して @machineName に対して while ループを実行し、"127.0.0.1" または "::1" を含む行を削除したいだけです。その中にありますが、それらを解析する方法がわかりません。行にそれらが含まれているかどうかがわかれば、その行を削除できます。何か案は?

4

2 に答える 2

0

出力ファイルの127.0.0.1または::1を含むドロップ行にこの bash コマンドを使用できます。

sed -i -e '/127\.0\.0\.1/d' -e '/::1/d' file
于 2013-10-15T21:00:46.650 に答える
0

そのため、これに対して別のアプローチを取り、/etc のホスト ファイルを調べました。ファイル /etc/sysconfig/network をプルして、「HOSTNAME」を含む行を特に探しました。

create temp table machineNameTable (col1 text);
copy machineNameTable from '/etc/sysconfig/network';
set @machineName = 
    select * from machineNameTable
    where col1 ilike '%HOSTNAME%';
print @machineName;
drop table machineNameTable;

それは私に戻ってきます:

[PGSCRIPT ] ("HOSTNAME=SERVER_NAME")

これが他の誰かを助けることを願っています。

于 2013-10-18T13:43:01.677 に答える