0

好的,希望我能正确解释这一点,因为我不知道是什么原因造成的,也不知道如何解决。

出于某种原因,bash 命令(在 CentOS 6.x 服务器上)显示的信息比“正常”多,这会导致某些脚本出现问题。我不知道是否有这个名字,但希望有人知道这个问题的解决方案。

第一个例子。

正确/良好的服务器:

[root@goodserver ~]# vzctl enter 3567
entered into CT 3567
[root@example /]#

(这是正确的行为)

不正确/坏的服务器:

[root@badserver /]# vzctl enter 3127
Entering CT
entered into CT 3127
Open /dev/pts/0
           [root@example /]#

使用“坏”服务器,它将像往常一样显示更多信息,例如:

  • 进入CT
  • 打开 /dev/pts/0

这就像它解析关于它正在做什么的额外信息。

当然,上面的内容纯粹是装饰性的,但是对于我们使用的几个 bash 脚本,这些问题确实是个问题。

我们使用的脚本的一部分,使用以下命令(还有更多,但这主要是一个错误的例子):

 DOMAIN=`vzctl exec $VEID 'hostname -d'`

以上信息的结果在/etc/named.conf中解析。

GOOD服务器上,它会像这样添加到 named.conf 中:

zone "example.com" {
    type master;
    file "example.com";
    allow-transfer {
            200.190.100.10;
            200.190.101.10;
            common-allow-transfer;
    };
};

以上是正确的。

BAD服务器上,它会像这样添加到 named.conf 中:

zone "Executing command: hostname -d
example.com" {
    type master;
    file "Executing command: hostname -d
example.com";
    allow-transfer {
            200.190.100.10;
            200.190.101.10;
            common-allow-transfer;
    };
};

所以它添加了它所做的操作,在这个例子中是“执行命令:主机名 -d”

当我在好服务器和坏服务器上运行命令时,这里是另一个示例。

坏服务器:

[root@bad-server /]# DOMAIN=`vzctl exec 3333 'hostname -d'`
[root@bad-server /]# echo $DOMAIN
Executing command: hostname -d example.com

好的服务器:

[root@good-server ~]# DOMAIN=`vzctl exec 4444 'hostname -d'`
[root@good-server ~]# echo $DOMAIN
example.com

我的知识有限,但我已经尝试了几件事来检查 rsyslog 和 grub.conf,但似乎没有什么不寻常的。

我不知道为什么它会显示额外的信息。

可能这是简单/愚蠢的事情,但我已经尝试解决这个问题好几个小时了,我真的不知道......

因此,非常感谢任何帮助。

补充信息:两台服务器都使用:kernel.printk = 7 4 1 7(我不知道这是否有用)

4

2 回答 2

0

好吧(感谢 Aaron 为我指明了正确的方向)我终于找到了导致我在使用此脚本时遇到的所有问题的小罪魁祸首(该脚本适用于所有其他服务器,因此显然无需更改)。

这些问题是由 vz.conf(位于 /etc/vz/ 目录中)中设置的 VERBOSE leven 引起的。那里有一个名为“VERBOSE”的选项,在我的情况下它设置为3。

根据 OpenVZ 的网站,它执行以下操作:

Increments logging level up from the default. Can be used multiple times. 
Default value is set to the value of VERBOSE parameter in the global
configuration file vz.conf(5), or to 0 if not set by VERBOSE parameter.

在我将 VERBOSE=3 更改为 VERBOSE=0 之后,我的脚本再次运行良好(就像其他服务器一样)。:-)

非常感谢 Aaron 为我指明了正确的方向。当您知道在哪里寻找时,答案很简单!



很抱歉,我对 ndim 的反应有点失望。这是他在那之后的第二次回应非常无助和粗鲁。他显然没有阅读我正确发布的问题。那好吧。

于 2018-02-08T13:22:17.877 回答
-1

我会确保正确解析命令的输出。在这种情况下,我们只对表格的行感兴趣

entered into CT 12345

这样做的一种方法是将所有内容通过管道传输sedsed仅在行看起来如上时打印数字(未经测试,我总是忘记哪些大括号/括号/括号需要在它们前面加上反斜杠):

whateverthecommand | sed -n 's/^entered into CT ([0-9]{1,})$/\1/p'
于 2018-02-08T11:52:29.460 回答