我尝试使用下面的脚本从远程服务器上的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
答案 0 :(得分:1)
您需要在远程系统上运行df
,而不是将交互式ssh
的输出传输到它:
SIZE=$(ssh -n $hostname df -Pkhl | grep '/Volumes/UserStorage$' | awk '{print $2}')
此外,使用-n
ssh
选项可以防止stdin
尝试从{{1}}读取,这将消耗服务器列表文件中的其余行。