如何为多个服务器上的Perforce连接编写测试脚本

时间:2012-02-27 20:43:09

标签: shell ssh perforce

我正在尝试自动执行一些服务器中需要执行的一些检查,因为它们已经构建完成。我需要ssh到服务器,检查可用空间,并检查是否有p4连接。我将结果输出到日志中,稍后进行解析。我的代码可以工作,但如果p4连接失败,我没有得到任何实际输出,它只是杀死了ssh并移动到下一个服务器上。有没有办法只在检查p4连接的部分设置时间限制,如果达到该限制,我可以输出“p4错误”到日志?所以,就像我在ssh中运行的这些命令上只有一个计时器:

echo \\\"<CONN>\\\" export P4PORT=${p4port}; /usr/local/bin/p4 info | grep Server | grep address; \\\"</CONN>\\\";"

以下是我目前所拥有的一个例子:

servers="server1 server2 server3"
dated=`date +%Y%m%d`
log="p4connectivity_${dated}.txt"

echo "Script starting at `date` > $log
for server in $servers
do
        echo $server >> $log
        ssh -o ConnectTimeout=60 ${user}@${server}.${fqdn} "echo \\\"<BEGIN>\\\"; date -u +%m%d%Y_%H%M%S_%Z; echo \\\"</BEGIN>\\\";  echo \\\"<FREE_SPACE>\\\"; df -k | grep app; echo \\\"</FREE_SPACE>\\\"; echo \\\"<CONN>\\\" export P4PORT=${p4port}; /usr/local/bin/p4 info | grep Server | grep address; \\\"</CONN>\\\";" >> $log 2>&1
done

echo "Script is finished"

我想我可以做类似的事情:

1 个答案:

答案 0 :(得分:0)

您可以尝试p4 ping命令。我不确定,但它可能具有与p4 info不同的错误特征。

更好的是,为什么不从本地计算机发出p4 info,而不是通过ssh执行?