Уважаемый All,
все мы по долгу службы или просто для своего удобства
вынуждены писать различные скрипты для различных целей, будь то
автоматическая инсталяция продуктов на несколько машин или вещи
попроще. Вот я и подумал, что зачем сто раз писать то, что уже
давно написано и во что вложено достаточно труда и времени.
Давайте устроим здесь своеобразный ⌠пункт обмена■, неопытные
пользователи скажут Вам спасибо и смогут сразу использовать
скрипты, а опытные смогут сэкономить себе немного времени,
головной боли, а также поучится новым программистским приемам.
Для затравки выложу здесь небольшой (большой в заголовке темы,
думаю могут не пропустить) скрипт, который упорядывачивает вывод
от стандартной команды df (для Линукса это, может не так актуально,
а мне на Солярисе 2.6 очень даже помогает.) внутри ещё чего покидаю...
Так что, продолжение следует?..
!/bin/ksh -p
if [ $# = 0 ] ; then
print - "`df -k | head -1 ;
df -k | tail +2 | egrep -v '^\/dev\/dsk|^\/dev\/md' | sort -k 1 ; \
df -k | egrep '^\/dev\/dsk|^\/dev\/md' | sort -k 1 ; \
df -k | \
awk '{a+=$2} {b+=$3} {c+=$4} END \
{printf \"TOTAL %-8d %-7d %-7d %5d%%\n\", \
a,b,c,100-((c/a)*100)}'`" | \
sed 's/Mounted on/MountPoint/' | \
nawk '{for (i=length($0);i;i--) printf "%c", substr($0,i,1); printf "\n"}' | \
sed -e "s/\([0-9][0-9][0-9]\)\([0-9][0-9][ 0-9]\)/\1,\2/g" -e \
"s/\([0-9][0-9][0-9]\)\([0-9][0-9]\ )/\1,\2/g" -e \
"s/\([0-9][0-9][0-9]\)\([0-9]\)/\1, \2/g" | \
nawk '{for (i=length($0);i;i--) printf "%c", substr($0,i,1); printf "\n"}' > \
/tmp/DF.$$
else
print - "`df -k $@ ; df -k $@ | \
awk '{a+=$2} {b+=$3} {c+=$4} END \
{printf \"TOTAL %-8d %-7d %-7d %5d%%\n\", \
a,b,c,100-((c/a)*100)}'`" | \
sed 's/Mounted on/MountPoint/' | \
nawk '{for (i=length($0);i;i--) printf "%c", substr($0,i,1); printf "\n"}' | \
sed -e "s/\([0-9][0-9][0-9]\)\([0-9][0-9][ 0-9]\)/\1,\2/g" -e \
"s/\([0-9][0-9][0-9]\)\([0-9][0-9]\ )/\1,\2/g" -e \
"s/\([0-9][0-9][0-9]\)\([0-9]\)/\1, \2/g" | \
nawk '{for (i=length($0);i;i--) printf "%c", substr($0,i,1); printf "\n"}' > \
/tmp/DF.$$
fi
while read Filesystem kbytes used avail capacity MountedOn ; do
printf "%-38.38s %11.11s %11.11s %11.11s %5.5s %-18.18s\n" \
$Filesystem $kbytes $used $avail $capacity $MountedOn | \
sed 's/MountPoint/Mounted on/g'
done < /tmp/DF.$$
rm -f /tmp/DF.$$
#df-sum
hostnm=`hostname`
dfbinary="/bin/df -kl"
disksum=`$dfbinary | grep dev | awk '{t += $2; u += $3} \
END { printf("%d %d",t,u) }'`
printf "================================== ======================================== ======================\n"
printf "TOTAL local for \033[1m%-8s\033[0m in kbytes\n" $hostnm
printf "%50d %11d\n" $disksum
exit 0