Pbrun 不允许执行命令

Pbrun 不允许执行命令

pbrun为什么我执行的时候会出现这样的情况

$ pbrun ls
You are NOT allowed to use pbrun -h <remotehost> ls.
Please try again without -h option.

Host: xxxx
Submithost: xxxx.abcd.xyz.com


pbrun7.5.0-12[404]: Request rejected by pbmasterd on server1234.abcd.yyyy.com.  

我实际上正在尝试使用 执行打印机相关命令,例如lpshutlpadminpbrun
但它会抛出如上所述的确切错误。

答案1

这是您运行 pbrun 的提交主机和 Masterhost 之间的名称解析问题。

对于变量“clienthost”,pbrun 首先获取主机名(即主机名命令),然后 pbrun 获取返回的主机名的 ip 地址,最后,pbrun 反向解析提交主机上的 ip 地址并用此填充“clienthost”变量结果。 (正向和反向名称解析很重要)

如果 -h 未与 pbrun 一起使用,则变量“host”将与“clienthost”相同。

变量“host”是使用 -h 开关传递给 pbrun 的值。如果策略中没有显式设置 runhost 的值,则其值来自 host。

Submithost 是 masterhost 上基于从 IP 数据包标头中的源 IP 地址获取的 IP 地址的反向解析主机名。

在提交主机上,主机被设置为其 IP 的 getent 系统调用返回的短名称。

在 Masterhost 上,submithost 被设置为 FQDN,因为该 FQDN 由 getent 系统调用返回,以获取提交主机的源 IP。

部分原因是提交主机通过文件进行解析,/etc/hosts 将短名称作为规范名称,并且主主机正在执行 DNS 解析并返回 FQDN。

解决这个问题可以通过名称解析更改或策略更改来解决。
名称解析可以编辑提交主机上的 /etc/hosts 文件,以将规范名称设置为 FQDN。策略更改可以是将运行主机设置为提交主机,因此两者相同,或者可能更好,在进行主机名比较时,您可以进行短名称比较。

在您的保单中,您有类似以下内容:

if (submithost != runhost) {

  print{"You are NOT allowed to use pbrun -h <remotehost> ls."};

  print{"Please try again without -h option.\n\n"};

  print{"Host:", host};

  print{"Submithost:", submithost};

  reject;

}

您将需要将您的条件更改为:

if (split(submithost,".")[0] != split(runhost,".")[0]) {

这将进行显式的短名称主机名比较。如果您已经有一个函数可以执行此操作,或者正在使用 pblibs.conf 示例策略,则有一个为此定义的函数。

#

#   The function GetShortName will take a host name and return the

# short name of the FQDN, or just return the shortname if the

# the short name was passed as the argument. This function requires

# one argument, a string for the hostname.

# To call the function:

# GetShortName("test.beyondtrust.com");

# GetShortName(masterhost);

#

function GetShortName(SomeHostName) {

  GetShortName = split(SomeHostName,".")[0];

}

答案2

尝试用

pbrun -h "machine name"

或者

pbrun -h "machine name" pbksh

相关内容