Bash + SSH + Grep不生成输出

时间:2015-04-14 03:20:12

标签: bash unix grep

我尝试使用下面的脚本从远程服务器上的df命令中提取值,然后记录到日志文件中。 SSH密钥到位,不需要密码(这不是问题)。

然而,它已经挂断了,并没有吐出输出。

#!/bin/bash

PATH=/bin:/usr/bin:/usr/sbin
export PATH

SERVERLIST=/opt/scripts/server-list.dat

while IFS='|' read -u 3 hostname; do

echo evaluating $hostname...

SIZE=$(ssh $hostname | df -Pkhl | grep '/Volumes/UserStorage$' | awk '{print $2}')
 echo $SIZE


done 3< $SERVERLIST

exit 0

1 个答案:

答案 0 :(得分:1)

您需要在远程系统上运行df,而不是将交互式ssh的输出传输到它:

SIZE=$(ssh -n $hostname df -Pkhl | grep '/Volumes/UserStorage$' | awk '{print $2}')

此外,使用-n ssh选项可以防止stdin尝试从{{1}}读取,这将消耗服务器列表文件中的其余行。