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")

我知道我有三行要使用,在这种情况下,所以我打算使用 @machineNameCount 在 @machineName 上运行一个 while 循环,我只想删除任何具有“127.0.0.1”或“::1”的行在其中,但我不知道如何解析这些。如果我可以查看一行是否包含那些我可以删除该行。有任何想法吗?

4

2 回答 2

0

您可以将此 bash 命令用于包含输出文件的127.0.0.1::1的删除行

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 回答