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.
lpshut
실제로 , lpadmin
등을 사용하여 프린터 관련 명령을 실행하려고 합니다 pbrun
.
하지만 위에서 언급한 대로 정확한 오류가 발생합니다.
답변1
이는 제출 호스트와 pbrun을 실행 중인 마스터 호스트 간의 이름 확인 문제입니다.
"clienthost" 변수의 경우 pbrun은 먼저 호스트 이름(즉, 호스트 이름 명령)을 가져온 다음 pbrun은 반환된 호스트 이름의 IP 주소를 가져오고 마지막으로 pbrun은 제출된 호스트의 IP 주소를 역으로 구문 분석하여 "clienthost" 변수를 채웁니다. 이것으로 결과. (정방향 및 역방향 이름 확인이 중요합니다)
-h가 pbrun과 함께 사용되지 않으면 "host" 변수는 "clienthost"와 동일합니다.
"host" 변수는 -h 스위치를 사용하여 pbrun에 전달된 값입니다. runhost 값이 정책에 명시적으로 설정되지 않은 경우 해당 값은 호스트에서 가져옵니다.
Submithost는 IP 패킷 헤더의 소스 IP 주소에서 얻은 IP 주소를 기반으로 masterhost에서 역으로 확인된 호스트 이름입니다.
제출하는 호스트에서 호스트는 해당 IP에 대한 getent 시스템 호출에서 반환된 짧은 이름으로 설정됩니다.
Masterhost에서 submithost는 제출 호스트의 소스 IP를 얻기 위해 getent 시스템 호출에 의해 FQDN이 반환되기 때문에 FQDN으로 설정됩니다.
이는 부분적으로 제출 호스트가 짧은 이름을 표준 이름으로 사용하여 /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