我正在使用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“在其中,但我无法弄清楚如何解析那些。如果我可以看到一行包含那些我可以删除该行。有什么想法吗?
答案 0 :(得分:0)
您可以将此bash命令用于包含 127.0.0.1 或 :: 1 输出文件的放置行
sed -i -e '/127\.0\.0\.1/d' -e '/::1/d' file
答案 1 :(得分:0)
所以我采用了不同的方法,然后查看/ etc中的hosts文件;我拉了文件/ 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")
希望这可以帮助别人。