我通过一个脚本在大约150个RHEL服务器上执行数据收集,该脚本被复制(scp)到每个服务器,然后通过ssh运行。在监控服务器上,我有:
H="ssh cshoults@ /usr/local/sc/collect.sh $SENDER $OUTPUTMETHOD "
RESULT=`$H`;
echo $RESULT;该脚本返回九个用冒号分隔的值。然后,我设置了9个变量,如下所示:
HST=`$H | awk -F' : ' '{ print $1}`但是,我可以通过速度判断它每次都会发送到远程服务器,而不是去服务器一次并将响应设置为字符串。一天已经很晚了,我对这件事很恼火。有人能帮我回答这个问题吗?如果我说未找到,它会尝试执行命令,并给出HST=$RESULT...`,所以我知道这是不正确的。
发布于 2011-08-25 07:19:07
如果您不想每次都访问服务器,请保存结果。
CMD="ssh cshoults@ /usr/local/sc/collect.sh $SENDER $OUTPUTMETHOD"
RESULT=$($CMD)
V1=$(echo $RESULT | awk -F ' : ' '{print $1}')
V2=...发布于 2011-08-25 10:48:49
以下是对Dietrich的回应的增强:
CMD="ssh cshoults@ /usr/local/sc/collect.sh $SENDER $OUTPUTMETHOD"
RESULT=$($CMD)
N=1
while [ $N -le 9 ]
do
eval V$N=`echo $RESULT | cut -d: -f$N`
N=`expr $N + 1`
done发布于 2011-08-25 12:47:57
顺便说一下,您可以使用特殊形式的set拆分成$@;
# Save current IFS
oldifs=$IFS
# Temporarily set up to split on colons
IFS=:
# Split $RESULT into $@
set -- $RESULT
# Restore IFS
IFS=$oldifs
# Result is now in $1 $2 $3 etchttps://stackoverflow.com/questions/7183410
复制相似问题