riazmey

Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрый день. Решил здесь выкладывать свои скрипты. Может кому-то понадобятся. Если кто-то решит выложить свои пожалуйста, пишите. В результате хочу сделать топик в котором будут скрипты для новоиспеченного админа на linux. Также задавайте вопросы по скриптам, если смогу - отвечу. Процедура ftp-send-file() - отправка файла на ftp ресурс (каталоги на ftp ресурсу автоматически создаются как на хосте) Пример записи в /etc/crontab */1 * * * * root . /opt/scripts/functions.sh; ftp-send-file /backups/share-files/ /backups/share-files/share-00-00-00.tar.gz Код: ftp-send-file(){ FTPD="$1" #директория внутри FTP (в конце без слеша) FTPU="UserName" #имя пользователя FTPP="PAROl" #пароль FTPS="www.my.server.ru" #сервер FTP CURL="$(which curl)" # Убираем из пути первый символ / если он есть FTPD_first_symb="$(echo $FTPD | sed 's/^\(.\).*/\1/')" if [ "$FTPD_first_symb" == "/" ]; then FTPD="$(echo $FTPD | sed 's/^.//')" fi ftp_dirs="$(echo $1 | sed 's/\// /g')" path="" for cer_dir in $ftp_dirs do path="$path/$cer_dir" $CURL -u $FTPU:$FTPP ftp://$FTPS/ -s -X "MKD $path" done } | Процедура mount-smb() - Монтируем cifs ресурс в указанную папку (перед монтированием делает проверку на наличие уже примонтированной ФС) Пример записи в /etc/crontab */1 * * * * root . /opt/scripts/functions.sh; mount_smb "//XXX.XXX.X.XX/share" "/mnt/share" Код: mount-smb(){ MOUNTED=$(echo "`bash -c df -h | grep \"$2\"`") if [ ! -n "$MOUNTED" ]; then mount.cifs -o rw,iocharset=utf8,dir_mode=0777,file_mode=0777,sec=lanman,guest,sec=ntlm "$1" "/mnt/$2/" fi } | Процедура clear-active-large-log-files() - Очищает лог файлы, размер которых выше 1Gb Пример записи в /etc/crontab 0 */2 * * * root . /opt/scripts/functions.sh; clear-active-large-log-files Код: clear-active-large-log-files(){ list_files=`find /var/log/* -type f -mtime -1 -size +1G` for large_file in $list_files do size_large_file=`du -h /var/log/messages-20180729 | awk '{print$1}'` cat /dev/null > $large_file done } | Процедура defragmentation-fs() - Проверяет потребность в проведении дефрагментации ФС (только ext4), при наличии потребности проводит её. Пример записи в /etc/crontab 0 5 * * * root . /opt/scripts/functions.sh; defragmentation-fs /dev/sda1 Код: defragmentation-fs(){ file_system=$1 echo "ДЕФРАГМЕНТАЦИЯ ФАЙЛОВОЙ СИСТЕМЫ $file_system" type_fs=`df -T $file_system | grep '/dev' | awk '{print$2}'` if [ $type_fs == "ext4" ]; then result_scan=`e4defrag -c $file_system | grep "($file_system)"` nothing=`echo "$result_scan" | grep "none can be defragmented"` if [ ! -n "$nothing" ]; then need_defrag=`echo "$result_scan" | grep "does not need defragmentation"` if [ ! -n "$need_defrag" ]; then echo "`e4defrag -v $file_system`" else echo "Файловая система $file_system в хорошем состоянии, провередение дефрагментации нецелесообразно." fi else echo "В файловой системе $file_system нечего дефрагментировать." fi else echo "Файловая система $file_system имеет тип отличный от EXT4, провередение дефрагментации невозможно!" fi } | Процедура ram-cache-clean() - Очищет кэш оперативной памяти (НЕ SWAP, только RAM) Пример записи в /etc/crontab 0 1 * * * root . /opt/scripts/functions.sh; ram-cache-clean Код: ram-cache-clean(){ sync; echo 1 > /proc/sys/vm/drop_caches sync; echo 2 > /proc/sys/vm/drop_caches sync; echo 3 > /proc/sys/vm/drop_caches } | Процедура backup-postgres-db() - Производим архивацию базы данных PostgreSQL Пример записи в /etc/crontab 0 2 * * * root . /opt/scripts/functions.sh; backup-postgres-db test_DB Код: backup-postgres-db(){ BACKUPS_DIR="/backups" dbname="$1" mkdir -p $BACKUPS_DIR/DB/$dbname if [ -f "$BACKUPS_DIR/DB/$dbname/$dbname-$(date '+%d-%m-%y').dump" ]; then rm -f "$BACKUPS_DIR/DB/$dbname/$dbname-$(date '+%d-%m-%y').dump" fi pg_dump -U postgres -Fc $dbname > $BACKUPS_DIR/DB/$dbname/$dbname-$(date '+%d-%m-%y').dump } | Процедура maintenance-postgres-db() - Производим обслуживание базы данных PostgreSQL Пример записи в /etc/crontab 0 2 * * * root . /opt/scripts/functions.sh; maintenance-postgres-db test_DB Код: maintenance-postgres-db(){ BACKUPS_DIR="/backups" LOG_DIR="$BACKUPS_DIR/logs" LOG_FILE="$LOG_DIR/log_$(date +'%d-%m-%y').log" dbname="$1" strreindex="REINDEX DATABASE $dbname" psql -U postgres --log-file=$LOG_FILE --dbname=$dbname --command='VACUUM (FULL, ANALYZE)'; psql -U postgres --log-file=$LOG_FILE --dbname=$dbname --command='CLUSTER'; psql -U postgres --log-file=$LOG_FILE --dbname=$dbname --command="""$strreindex"""; } | Процедура backup-lxc-files() - Производим архивирование LXC контейнера Пример записи в /etc/crontab 0 2 * * * root . /opt/scripts/functions.sh; backup-lxc-files www Код: backup-lxc-files(){ BACKUPS_DIR="/backups" LXC_DATA="/lxc-data" lxc_container="$1" exclude_files=" --exclude=lost+found --exclude=*.thunderbird --exclude=*.dt --exclude=*.dump --exclude=*.mozilla --exclude=*.cache --exclude=*.pulse --exclude=*.thumbnails --exclude=*.1cv8 --exclude=Trash --exclude=$LXC_DATA/$lxc_container/rootfs/mnt --exclude=$LXC_DATA/$lxc_container/rootfs/tmp --exclude=$LXC_DATA/$lxc_container/rootfs/sys --exclude=$LXC_DATA/$lxc_container/rootfs/proc" lxc_state=`lxc-ls -f | grep $lxc_container | awk '{print $2}'` if [ "$lxc_state" == "RUNNING" ]; then lxc-stop -n $lxc_container fi mkdir -p $BACKUPS_DIR/LXC/$lxc_container if [ -f "$BACKUPS_DIR/LXC/$lxc_container/$lxc_container-$(date '+%d-%m-%y').tar.gz" ]; then rm -f "$BACKUPS_DIR/LXC/$lxc_container/$lxc_container-$(date '+%d-%m-%y').tar.gz" fi cd $LXC_DATA/$lxc_container tar --numeric-owner -cvp $exclude_files "$LXC_DATA/$lxc_container/" | pigz > "$BACKUPS_DIR/LXC/$lxc_container/$lxc_container-$(date '+%d-%m-%y').tar.gz" lxc_autostart=`lxc-ls -f | grep $lxc_container | awk '{print$5}'` if [ "$lxc_autostart" == "YES" ]; then lxc-start -n $lxc_container -d fi } | Процедура rm_tmp_user() - Удаление временных файлов пользователя/all из папки /tmp Пример записи в /etc/crontab 0 2 * * * root . /opt/scripts/functions.sh; rm_tmp_user all Код: rm_tmp_user(){ if ! [ $# -gt 0 ]; then echo "Необходимо указать имя пользователя или all" else cd /tmp if [ $1 == "all" ]; then for i in /home/*;do if ! [ $i == "/home/usr1cv8" ]; then cer_user=`echo $i | sed "s/\/home\///"` echo "Удаление tmp файлов пользователя: $cer_user" ls -la | grep "$cer_user" | awk '{print$9}' | xargs rm -rf fi done else echo "Удаление tmp файлов пользователя: $1" ls -la | grep "$1" | awk '{print$9}' | xargs rm -rf fi #rm -rf /home/"$1"/.1cv8/1C/1cv8/ fi } | Процедура list_db_1c() - Выводит список баз данных зарегистрированных в кластере 1С (локально) Пример использования [root@rdp ~]# . /opt/scripts/functions.sh; list_db_1c Код: list_db_1c(){ UID_CLUSTER=`/opt/1C/v8.3/i386/ras --daemon cluster; /opt/1C/v8.3/i386/rac cluster list | grep cluster | awk '{print$3}' | sed q` listdb=`/opt/1C/v8.3/i386/rac infobase --cluster=$UID_CLUSTER summary list | grep name | awk '{print$3}'` for dbname in $listdb do echo "$dbname" done } |
| Всего записей: 3 | Зарегистр. 13-07-2010 | Отправлено: 15:57 29-10-2018 | Исправлено: riazmey, 17:16 29-10-2018 |
|