2012-02-27 85 views
0

我试图在构建它时跨越一堆服务器来自动执行一些检查。我需要ssh到服务器,检查可用空间,并检查是否有p4连接。我将结果输出到日志,并在稍后解析。我的代码如下,但如果P4连接失败,我没有得到任何实际的输出,它只是杀死SSH并移动到下一台服务器。有没有办法只在检查p4连通性的设置上设置时间限制,如果达到此限制,我可以输出“p4错误”到日志中?因此,它会像我有一个计时器只在这一块的命令在SSH跑:如何为多个服务器上的Perforce连接编写测试脚本

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" 

我可以这样做:

回答

0

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

更好的是,为什么不直接从本地机器发出p4 info,而不是通过ssh来完成呢?

相关问题