Инструменты пользователя

Инструменты сайта


sh:du_report

Disk-Space Reporting Tool - du_report.sh

Установка du_report.sh

  • 1. Добавить строку в файл /etc/sudoers:
    • # vi /etc/sudoers
%unixsudo       ALL=(ALL)       NOPASSWD: ALL
  • 2. Создать директории /home/cs, /home/cs/reports и /home/cs/reports/log.
    • # mkdir -p /home/cs/reports/log
  • 3. Изменить права на директорию /home/cs, сделав её доступной для записи, чтения и исполнения для пользователя cs:
    • # chown -R cs:gccc /home/cs
    • # chmod -R 700 /home/cs
  • 4. Выполнить login от имени пользователя cs и продолжать работу от его имени:
    • # sudo su - cs
  • 5. Создать файлы du_report.sh и awk_columns.sh (содержимое файлов ниже):
    • > touch /home/cs/reports/du_report.sh
    • > touch /home/cs/reports/awk_columns.sh
  • 6. Сделать вышеуказанные файлы исполняемыми и (если требуется) отредактировать du_reports.sh:
    • > chmod +x /home/cs/reports/du_report.sh
    • > chmod +x /home/cs/reports/awk_columns.sh
  • 7. Создать на почтовом сервере группы du_report и добавить в неё пользователей, которым нужно пересылать отчёты.
  • 8. Сформировать тестовый отчёт:
    • > /usr/bin/sudo /home/cs/reports/du_report.sh
    • проверить почту и убедиться, что отчёт сформировался правильно.
  • 9. Добавить в crontab следующую конструкцию:
#!/bin/sh
30 04 * * 0 /home/cs/reports/du_report.sh

du_report.sh

#!/bin/bash
#
# du_report.ru
# e-mail:  web@stty.ru
date4subj=$(date +"%d/%m/%Y")
date4file=$(date +"%Y%m%d".txt)
log_wd=/home/cs/reports/log
awk_proc=/home/cs/reports/awk_columns.sh
host=gfs.gccc.ru
#
echo Disk-Space Reporting Tool [du_report.sh]  > $log_wd/$date4file
rm -f $log_wd/*
echo Host: $host  >> $log_wd/$date4file
echo Date: $date4subj >> $log_wd/$date4file
echo -e " "  >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
df -h /dev/mapper/VolGroup10-LogVol10 >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
echo $log_wd/$date4file
echo -e "/storage1/home -> \c" >> $log_wd/$date4file
du -sh /storage1/home | $awk_proc >> $log_wd/$date4file
echo -e "  " >> $log_wd/$date4file
du -sk /storage1/home/* | sort -n | awk '{ print $2 }' | while read f ; do du -sh "$f" ; done >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
echo -e "/storage1/Partners -> \c" >> $log_wd/$date4file
du -sh /storage1/Partners | $awk_proc >> $log_wd/$date4file
echo -e "  " >> $log_wd/$date4file
du -sk /storage1/Partners/* | sort -n | awk '{ print $2 }' | while read f ; do du -sh "$f" ; done >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
echo -e "/storage1/software -> \c" >> $log_wd/$date4file
du -sh /storage1/software | $awk_proc >> $log_wd/$date4file
echo -e "  " >> $log_wd/$date4file
du -sk /storage1/software/* | sort -n | awk '{ print $2,$3 }' | while read f ; do du -sh "$f" ; done >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
echo -e "/storage1/vol -> \c" >> $log_wd/$date4file
du -sh /storage1/vol | $awk_proc >> $log_wd/$date4file
echo -e "  " >> $log_wd/$date4file
du -sk /storage1/vol/* | sort -n | awk '{ print $2 }' | while read f ; do du -sh "$f" ; done >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
echo -e "/storage1/vol/Departments -> \c" >> $log_wd/$date4file
du -sh /storage1/vol/Departments | $awk_proc >> $log_wd/$date4file
echo -e "  " >> $log_wd/$date4file
du -sk /storage1/vol/Departments/* | sort -n | awk '{ print $2 }' | while read f ; do du -sh "$f" ; done >> $log_wd/$date4file
echo "-----------------------------------------------------------" >> $log_wd/$date4file
echo Script execution time: $SECONDS seconds  >> $log_wd/$date4file
echo -e " "  >> $log_wd/$date4file
echo "Help and support: http://dev.gccc.ru/doku.php?id=manual:du_report"  >> $log_wd/$date4file
/usr/bin/mutt -s "$host disk usage report - $date4subj" du_report@gccc.ru < /home/cs/reports/log/$date4file

awk_columns.sh

#!/bin/sh
awk '
{ print $1 "\t"
}
'
sh/du_report.txt · Последние изменения: 2016/06/24 09:57 — Alex