1

通过 root 运行此脚本时,输出变量不存储“pbrun tsm_support.ksh -c $i”命令的值。

 #!/bin/bash
set -x

for i in `cat /home/unixlist.txt`

do
output=$(pbrun tsm_support.ksh -c $i)
echo $output >> /home/file.txt
if echo "$output" | grep -i "OPTION01"  ;
then
echo successfull-- $i===$output 

当我从本地用户 id 运行此脚本时,它会完美运行文件并打印输出,

Error-- DBSSS0006=== Starting checkfix script.....DBSSS0006:B:SunOS:1:1:2:0:Z
Error-- DBSSS0005=== Starting checkfix script.....DBSSS0005:B:SunOS:1:1:2:0:Z

但是当我从 root 运行这个脚本时,它不会获取输出变量的值。它不占用 $output 的值。

  Error-- DBSSS0006===
  Error-- DBSSS0005===

我没有root权限,我可以编辑crontab文件并将我的条目放在那里。

4

2 回答 2

1

问题是 crontab 中设置的环境变量与命令行中设置的环境变量。他们不一样。

要查看您必须更改的内容:将其放入您的 crontab 中:

* * * * * set > /tmp/crontab.txt

保存它,等待 2 -3 minuite 让它运行,然后删除 crontab 更改。

下一个:

set > /tmp/myenv.txt
diff /tmp/myenv.txt /tmp/crontab.txt

将向您展示差异。对您的 crontab 脚本进行一些更改,使其(可能)具有您需要的 PATH 变量和 LD_LIBRARY_PATH 变量更改。您不必更改每个环境变量。

于 2013-05-13T21:36:59.723 回答
0

您的问题是假设 powerbroker 在批处理模式下访问时具有与交互式终端模式下相同的环境变量。

即使没有看到实际的 tsm_support.ksh 脚本内容就不可能说那里存在什么缺陷,但我敢打赌,在 LD_LIBRARY_PATH 中所做的假设在任何地方和任何时候都是相同的。

尝试编辑脚本并放置行

LD_LIBRARY_PATH=/wherever/it/needs/to/point/to

在做任何其他事情之前。当然,如果这是您唯一的问题,这是有效的。我在过去 2 年曾与 powerbroker 合作过。它并不像人们对这种产品所期望的那样微不足道。如有疑问,请联系 Beyond Trust(原 Symmark)的技术支持。由于您正在许可产品,因此您必须有权获得技术支持。他们可以告诉你你到底错过了什么。

于 2013-05-14T01:02:58.980 回答