LINUX.ORG.RU

Сообщения Shulman

 

Где найти опакеченный php-fpm 5.3 для Debian 10

Форум — Admin

Очень нужно

 ,

Shulman
()

Странные названия российских голосовых ассистентов

Форум — Talks

Я вот что не пойму, ну купил я колонку с Алисой, а у меня дочь допустим, Алиса, или с Марией, Мария это жена. И толку от этих колонок тогда?

Чтобы активировать функции ассистента я должен назвать его имя, уточняю на всякий случай…

Они же взяли довольно распространенное имя.

То ли дело Сири, или Кортана, имена вымышленные с реальными множествами не пересекаются.

Я не пользовался, но подозреваю что вышесказанное имеет место быть.

Кто знает?

 

Shulman
()

Скрипт для проверки актуальности программных лицензий 1С

Форум — Admin

Ну сейчас скажут что не нужно, но все равно выложу, к тому же я в предыдущей теме просил помощи, поэтому сейчас делюсь результатом.

#!/bin/bash

CHATID='-320000008'
BOTID='bot14800000775:AAH1y14esdbbkjrtykrs_NyXiEw3DzB6H0vSJM'
LicNUM=''
RING="/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring"
ServerName="Server_name"

LicLIST=$($RING license list | awk -e '{print $1}')

for var in $LicLIST
do
    if $RING license validate --name "$var" --send-statistics false | grep -qw " выполнена успешно."
    then
        if [[ $1 = 'test' ]]
        then
            MESSAGE="OK | ring license validate | $ServerName"
            /usr/bin/curl -s -X POST -H 'Content-Type: application/json' -d '{"chat_id": "'"$CHATID"'", "text": "'"$MESSAGE"'", "disable_notification": false}' https://api.telegram.org/$BOTID/sendMessage
        fi
    else
        MESSAGE="FAIL | ring license validate | $ServerName"
        /usr/bin/curl -s -X POST -H 'Content-Type: application/json' -d '{"chat_id": "'"$CHATID"'", "text": "'"$MESSAGE"'", "disable_notification": false}' https://api.telegram.org/$BOTID/sendMessage
    fi
done

И сценарий запуска:

*/10 * * * * /path/license_validator.sh
0 8 * * * /path/license_validator.sh test

Для работы требуется установленная утилита ring из пакета license_tools

 , ,

Shulman
()

Помогите с регулярными выражениями?

Форум — Admin

Есть строка вида:

var="512249656144711-83304457808 (имя файла: \"20201115764705.lic\")"

Хочу получить часть 512249656144711-83304457808

Думаю в таком выражении:

LicNUM="$(echo "$var" | sed -nr "s/???????/p")"

Помогите пожалуйста, на bash

 ,

Shulman
()

Лоровец, а ты знаешь телефоны своих коллег?

Форум — Talks

Вот хотел понаматывать сопли на кулак, и рассказать очередную прохладную историю.

В общем обслуживаем несколько десятков бюджетных контор. В вопросе коммуникаций сложилось за 5 лет такое мнение: клиенту запомнить телефон конкретного сотрудника в обслуживающей организации нет никакой возможности.

По сапогам звонят пирожнику, по пирогам сапожнику, а скорее даже так: если в последний раз мне помогли по номеру X то я буду звонить по нему пока не возникнет исключение и мне не выдадут другой номер, повторить.

Работаем с не техническими специалистами, бухгалтерией, в основном.

Нет ни телефонных книг в телефоне, нельзя зайти на сайт и посмотреть там. Просто не жаль своего времени совсем, людям?

Вот думаю, это мы что-то не так делаем, или клиенту нашему фиолетово, это же все телефоны «КОМПАНИНЕЙМ» а они там все одинаковые.

Как обстоят дела у айтишников? Наверное подобных проблем быть не может?

 ,

Shulman
()

Переадресация запросов с 443 порта на порт 8080

Форум — Admin

конфиг nginx сервера:

server {
   listen 80;
   server_name mydomain.ru;
   return 301 https://$server_name$request_uri;
}


server {
   server_name mydomain.ru;

    listen *:443 ssl;
    ssl_certificate /etc/letsencrypt/live/mydomain.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.ru/privkey.pem;

    ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 10m;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;

    #логи
    access_log /var/log/nginx/mydomain.ru.access.log;
   error_log  /var/log/nginx/mydomain.ru.error.log;

   client_max_body_size 16400M;
   location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass http://127.0.0.1:8080;
   }

сервис точно работает локально на localhost:8080, как переадресовать на него запросы?

Сейчас nginx не стартует:


# systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2020-12-22 21:24:41 +05; 14s ago
     Docs: man:nginx(8)
  Process: 18882 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 18883 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

дек 22 21:24:40 webserver nginx[18883]: nginx: [emerg] bind() to 0.0.0.0:8080 failed (98: Address already in use)
дек 22 21:24:40 webserver nginx[18883]: nginx: [emerg] bind() to [::]:8080 failed (98: Address already in use)
дек 22 21:24:40 webserver nginx[18883]: nginx: [emerg] bind() to 0.0.0.0:8080 failed (98: Address already in use)
дек 22 21:24:40 webserver nginx[18883]: nginx: [emerg] bind() to [::]:8080 failed (98: Address already in use)
дек 22 21:24:41 webserver nginx[18883]: nginx: [emerg] bind() to 0.0.0.0:8080 failed (98: Address already in use)
дек 22 21:24:41 webserver nginx[18883]: nginx: [emerg] bind() to [::]:8080 failed (98: Address already in use)
дек 22 21:24:41 webserver nginx[18883]: nginx: [emerg] still could not bind()
дек 22 21:24:41 webserver systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE
дек 22 21:24:41 webserver systemd[1]: nginx.service: Failed with result 'exit-code'.
дек 22 21:24:41 webserver systemd[1]: Failed to start A high performance web server and a reverse proxy server.

еще есть такой конфиг, судя по сокращению это и есть document-server

# cat /etc/nginx/conf.d/ds.conf
include /etc/nginx/includes/http-common.conf;
server {
  listen 0.0.0.0:8080;
  listen [::]:8080 default_server;
  server_tokens off;

  include /etc/nginx/includes/ds-*.conf;

 

Shulman
()

А можно перед https proxy Континент TLS поставить nginx?

Форум — Admin

Сейчас все работает так: Континент TLS клиент шифрует трафик клиента и пробрасывает его на маршрутизатор, который без изменений переадресует запрос на Континент TLS сервер, после чего уже запрос попадает на целевой Web сервер (один маленький проектик).

Что плохо? Теряется целый 1 реальный IP, а я хотел бы повесить на него еще несколько сайтов, сильно большого трафика не предвидится.

Так вот, возьмем nginx, на него же сессия попадет в зашифрованном виде (фаервол роутера же не понимает, что передает и руководствуется простым принципом: все что оттуда – туда).

Как сделать чтобы nginx так же смог пробросить трафик, но при этом понял, что это запрос для конкретного домена?


server {
   listen *:443 ssl;
   server_name kontinent.mydomain.ru;
   location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_pass https://1.2.3.4/;
   }
}

server {
   listen *:443 ssl;
   server_name public.mydomain.ru;
   location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_pass http://1.2.3.5/;
   }
}

Можно такое сделать?

 

Shulman
()

Выбора дистрибутива тред

Форум — Linux-install

Всем привет

Мой друг доктор не знает что со мной хотел поставить на старенький ноут ChromeOS, но их нет под старенький 32 битный Celeron, поэтому я предложил поставить какой ни будь Linux. На целевом ноутбуке 2Gb RAM.

Требования такие: чтобы легко ставился, так как я уехал жить в Лондон не смогу ему помогать, только по телефону. Чтобы была последняя версия Chrome Browser. Чтобы кодеки было легко поставить.

Посоветуйте что ни будь, так как я из десктопного Linux давно выпал.

 ,

Shulman
()

Этого не может быть, потому что не может, но: War Thunder, CRSED: F.O.A.D. и Enlisted + Эльбрус-8С

Форум — Talks

Российская компания Gaijin Entertainment портировала популярные видеоигры своей разработки War Thunder, CRSED: F.O.A.D. и Enlisted на ПК с процессором «‎Эльбрус-8С». Производительность оказалась сравнимой с аналогичной системой на Intel Core.

https://www.cnews.ru/news/top/2020-12-17_sovremennye_igry_poshli_na

 , ,

Shulman
()

Я жил во лжи, но прозрел!

Форум — Talks

Как то я создавал тред: Объясните для чего мне нужен Zabbix

И я не троллил, я искренне заблуждался.

Потратив месяц, в который я то погружался то откладывал на потом изучение Zabbix, я понял что такое за день не написать.

Сейчас я покрыл мониторингом все хосты в организации, в том числе физические ноды, и уже это дало мне некоторые ответы на вопрос: что может пойти не так в нашей инфраструктуре.

Даю совет тем кто думает так же как и я раньше, если у вас более 3 машин, разверните четвертую с Zabbix и наблюдайте. Это спасет вас от понедельнечных завалов и многих других неожиданностей.

А какую технологию вы открыли для себя в последнее время или за все время, которая бы вас так удивила, как меня Zabbix?

PS. Там даже есть интеграция с Telegram!!!

PPS. Спасибо, всем кто меня пинал в системы мониторинга, вместо разглядывания своих наколенных скриптов!

 , ,

Shulman
()

Посоны, у меня youtube отвалился, что с МТС, что с ОБИТ

Форум — Talks

Нет ну я понимаю что о таком мы не пишем, но ведь никогда не было!

 

Shulman
()

Zabbix agent is not available (or nodata for 30m)

Форум — Admin

Тестирую Zabbix в работе.

В какой то момент многие хосты стали выдавать такое сообщение.

Добавил ресурсов на Zabbix, не помогло.

top - 10:52:33 up  2:07,  1 user,  load average: 3,50, 3,35, 3,29
Tasks: 178 total,   5 running, 173 sleeping,   0 stopped,   0 zombie
%Cpu(s): 34,7 us,  2,2 sy,  0,0 ni, 62,2 id,  0,4 wa,  0,0 hi,  0,5 si,  0,0 st
MiB Mem :   7977,7 total,   5787,4 free,   1251,4 used,    938,8 buff/cache
MiB Swap:   2045,0 total,   2045,0 free,      0,0 used.   6442,2 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1459 zabbix    20   0  378744  18372   4376 R  94,7   0,2  58:08.96 zabbix_server
 1458 zabbix    20   0  379124  13216   4376 R  94,4   0,2  58:09.38 zabbix_server
 1460 zabbix    20   0  374844  14376   4376 R  93,7   0,2  58:07.48 zabbix_server
 1457 zabbix    20   0  744592 401352  22324 R  12,6   4,9   8:21.85 zabbix_server
  550 mysql     20   0 4278268 362352  19336 S   1,0   4,4   2:43.45 mysqld
  546 zabbix    20   0   26168   5684   4444 S   0,3   0,1   0:00.63 zabbix_agentd
  620 www-data  20   0  231932  29748  21100 S   0,3   0,4   0:02.58 apache2
 1430 zabbix    20   0  424280  83156  24252 S   0,3   1,0   0:02.09 zabbix_server
 1443 zabbix    20   0  387480  23612  10392 S   0,3   0,3   0:00.07 zabbix_server
 1469 root      20   0   11224   3912   3192 R   0,3   0,0   0:07.56 top
    1 root      20   0  169440  10120   7860 S   0,0   0,1   0:01.63 systemd
    2 root      20   0       0      0      0 S   0,0   0,0   0:00.00 kthreadd
    3 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 rcu_gp
    4 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 rcu_par_gp
    6 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 kworker/0:0H-kblockd
    8 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 mm_percpu_wq
    9 root      20   0       0      0      0 S   0,0   0,0   0:00.04 ksoftirqd/0
   10 root      20   0       0      0      0 I   0,0   0,0   0:08.65 rcu_sched
   11 root      20   0       0      0      0 I   0,0   0,0   0:00.00 rcu_bh
   12 root      rt   0       0      0      0 S   0,0   0,0   0:00.02 migration/0
   13 root      20   0       0      0      0 I   0,0   0,0   0:00.26 kworker/0:1-mm_percpu_wq
   14 root      20   0       0      0      0 S   0,0   0,0   0:00.00 cpuhp/0
   15 root      20   0       0      0      0 S   0,0   0,0   0:00.00 cpuhp/1
   16 root      rt   0       0      0      0 S   0,0   0,0   0:00.57 migration/1
   17 root      20   0       0      0      0 S   0,0   0,0   0:00.02 ksoftirqd/1

Помогает перезапуск службы, но не надолго. То есть сами агенты не останавливаются.

Куда копать, подскажите?

 

Shulman
()

error:1425F102:SSL routines:ssl_choose_client_version:unsupp

Форум — Admin

Добрый день, вчера настроил в заббиксе мониторинг PostgreSQL и Proxmox.

Сейчас разбираюсь с мониторингом MS SQL. У нас SQL 2014.

При тесте discovery в zabbix получаю эту ошибку, то есть идет попытка установить соединение но нет согласования по SSL.

Cannot connect to ODBC DSN: [SQL_ERROR]:08001][-1][[unixODBC][Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupp]|08001][-1][[unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection]

Сейчас установлен MS ODBC 17, как то похоже на тупик, так как играть с настройками /etc/ssl/openssl.cnf

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT@SECLEVEL=2

Пробовал.

Zabbix установлен на Debian 10.

 , ,

Shulman
()

Почему Zabbix выкладывает yaml, а в руководстве пишет про xml?

Форум — Admin

Добрый день

Помогите разобраться

Вот тут инструкция.

Но файла xml на git у них нет.

Чего я не пойму?

 

Shulman
()

Время прохладных историй от Шульмана

Форум — Talks

Ну что дорогие? Присаживайтесь поудобнее, я расскажу историю, а выводы вы как всегда будете делать сами.

На прошлой неделе в понедельник я получил приглашение пройти собеседование в одну неизвестную мне конторку на должность «Администратор Linux и Windows». Устное собеседования я скорее провалил, так как на вопрос что я буду мониторить, я толком ответить не смог, но мне предложили за 14 дней выполнить 10 тестовых заданий, с оплатой по факту по 1500 за задание.

Я обрадовался и стал зубами грызть, чтобы все получилось. И так с горем пополам в последний понедельник я работал над 7-м заданием.

Нужно было поднять Zimbra и перенести почту с разделегорованного домена на яндекс почте. Яндекс выдавал мне ошибку авторизации, после чего я предложил составить запрос в их поддержку, и собственно его написал, оставалось только отправить. Но мне сказали что это не требуется. Я еще раз попросил, сказал что это нормально, работать с саппортом, я знаю у яндекса он вменяемый.

Меня продержали в неведении сутки, после чего я сказал что не смогу выполнить задание и вынимался из трамвая.

Мне потом многие говорили, что никого скорее всего они брать не собирались, а просто задарма выполняют работы. Ну не знаю, деньги мне перевели.

Считаю что все это уже само по себе удача, ну и на будущее буду по увереннее, не знаю даже что вынеси из всего этого.

Довелось кучу всего впервые пощупать и еще деньги получил. А поиски работы продолжаются

 ,

Shulman
()

Продолжаю пить и не хожу на работу

Форум — Talks

Решил нарушить данное себе обещание не создавать контент для ЛОР , ибо шквор сам себя не заработает.

Фотку рабочего места размещаю впервые. Не считая неудачного раза, когда пост не приняли.

На большом мониторе в терминале запущена админка Proxmox. На планшете Пивоваров рассказывает вещи, ноутбук купил позавчера еще не понял что с ним делать, но думаю буду работать на нем из загородного дома по выходным. Планшет перекочевал на системный блок и более не используется, недавно купленный ноутбук радует, но иногда неприятно удивляет… глюки Windows проявляются частенько…

За ноутбуком Sony A6000, снимки на которую можно посмотреть в профиле.

Так уже получилось, что не могу переехать на Linux на рабочем компе, так как вынужден использовать VipNet, а злобные копирасты из Инфотекс просят отдельные деньги за лицензии под Linux.

Планшету Samsung Galaxy Tab S2 3 года (или больше?) но топовое железо еще актуально. Планшет, клава и чехол фирменные, стоили в свое время под 1,5 тысячи баксов, но жил тогда один, деньги водились. Зато для ноутбука купил мышку с bluetooth, кучей кнопок и встроенным аккумуляторам… хотя до этого был уверен что мышь не должна стоить дороже 300 рублей. Для офисной работы… но захотелось чего нибудь топового.

Стол узкий, не очень удобный, и покупал я его так чтобы поменьше потратить… приехал по объявлению, а там фирма по перепродаже офисной мебели. В итоге то за чем ехал оказалось продано, но на следующий день нужно было начинать работать и купил лучшее что у них было… под мои задачи.

Так и провожу дни на удалёночке.

По итогу работы делаю больше, стресс пока меньше… очень нравится.

Перемещено Shaman007 из workplaces

 ,

Shulman
()

Покритикуйте мой скрипт для разархивации архивов PostgreSQL

Форум — Admin

Скрипт архивации тут

# cat /root/do_restore.sh
#!/bin/bash

PORT=5433
USERNAME='dbadmin'
SERVERNAME='localhost'
ARCHIVEDIR='/incrimental'
NEWDBNAME='';
OLDDBNAME='';
ARCHIVEDATE='';
FILETORESTORE=''

if [[ $1 != '' ]]
then
    NEWDBNAME=$1
else
    echo "Enter new DB name as first parametr"
    exit
fi

if [[ $2 != '' ]]
then
    OLDDBNAME=$2
else
    echo "Enter DB name in archive"
    exit
fi

if [[ $3 != '' ]]
then
    ARCHIVEDATE=$3
else
    echo "Enter date in forman YYYY-mm-dd"
    exit
fi

if psql -U $USERNAME -h $SERVERNAME -p $PORT -lqt | cut -d \| -f 1 | grep -qw $NEWDBNAME
then
    echo "Database with this name exists on this cluster"
    exit
fi

DBLIST="$(ls $ARCHIVEDIR/$OLDDBNAME | grep -E "^${OLDDBNAME}.*$ARCHIVEDATE.*(.delta|.dump.gz)\$")"

if [[ "$DBLIST" = '' ]]
then
    echo "There is no file to restore"
    exit
fi


index=1
for var in $DBLIST
do
    echo "${index} $var"
    index=$(($index+1))
done

echo -n "Enter the number of archive in this list "

read answer

index=1
for var in $DBLIST
do
    if [[ $index = $answer ]]
    then
        FILETORESTORE=$var
        echo "$FILETORESTORE"
        break
    fi
    index=$(($index+1))
done

filetype=0

if file $ARCHIVEDIR/$OLDDBNAME/$FILETORESTORE | grep -qw "rdiff network-delta data"
then
    filetype=1
fi

if file $ARCHIVEDIR/$OLDDBNAME/$FILETORESTORE | grep -qw "PostgreSQL custom database dump"
then
    filetype=2
fi

if file $ARCHIVEDIR/$OLDDBNAME/$FILETORESTORE | grep -qw "gzip compressed data"
then
    filetype=3
fi


case "$filetype" in
    1)
        echo "rdiff network-delta data"
        SERIALNUM=$(echo "$FILETORESTORE" | sed 's/^.*'"${OLDDBNAME}"'_//;s/_daily.*//')
        echo $SERIALNUM
        ORIGINAL=$(find $ARCHIVEDIR/$OLDDBNAME/*$SERIALNUM*.dump.gz)
        echo $ORIGINAL
        gunzip -c $ORIGINAL > $ORIGINAL.decompressed
        /usr/bin/rdiff patch $ORIGINAL.decompressed $ARCHIVEDIR/$OLDDBNAME/$FILETORESTORE $ORIGINAL.restored
        rm $ORIGINAL.decompressed
        psql -U $USERNAME -h $SERVERNAME -p $PORT -c 'create database '$NEWDBNAME -d postgres
        psql -h $SERVERNAME -U $USERNAME -p $PORT -d $NEWDBNAME < $ORIGINAL.restored
        rm $ORIGINAL.restored
        ;;
    2)
        echo "PostgreSQL custom database dump"
        psql -U $USERNAME -h $SERVERNAME -p $PORT -c 'create database '$NEWDBNAME -d postgres
        pg_restore -h $SERVERNAME -U $USERNAME -p $PORT -d $NEWDBNAME -w -Fc $ARCHIVEDIR/$OLDDBNAME/$FILETORESTORE
        ;;
    3)
        echo "gzip compressed data"
        psql -U $USERNAME -h $SERVERNAME -p $PORT -c 'create database '$NEWDBNAME -d postgres
        gunzip < $ARCHIVEDIR/$OLDDBNAME/$FILETORESTORE | psql -h $SERVERNAME -U $USERNAME -p $PORT -d $NEWDBNAME
        ;;
    *)
        echo "Undefined file type"
        exit 0
        ;;

Спасибо всем кто помогает

 

Shulman
()

Что это такое и как с этим бороться? [bash-скрипт]

Форум — Admin

Если я выполю какой то код в сеансе терминала, он отработает. Но совсем нет гарантии что он будет работать так же в сценарии, и тем более при запуске например через cron.

С кроном все можно разрулить, сейчас не пойму вот что:

root@PostgreSQL:/home/maintainer/rdiff_test# wegasgasdfg="$(ls /incrimental/bis_kamin55_psql | grep -E "^bis_kamin55_psql.*2020-12-04.*(.delta|.dump.gz)$")"
root@PostgreSQL:/home/maintainer/rdiff_test# echo $wegasgasdfg
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-00.dump.delta bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-06.dump.delta bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-10.dump.delta bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-14.dump.delta bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-18.dump.delta bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-22.dump.delta

Вроде все хорошо. Но теперь делаю так:

root@PostgreSQL:/home/maintainer# cat /root/do_restore.sh
#!/bin/bash -x

PORT=5433
USERNAME='dbadmin'
SERVERNAME='localhost'
ARCHIVEDIR='/incrimental'
NEWDBNAME='';
OLDDBNAME='';
ARCHIVEDATE='';

if [[ $1 != '' ]]
then
    NEWDBNAME=$1
else
    echo "Enter new DB name as first parametr"
    exit
fi

if [[ $2 != '' ]]
then
    OLDDBNAME=$2
else
    echo "Enter DB name in archive"
    exit
fi

if [[ $3 != '' ]]
then
    ARCHIVEDATE=$3
else
    echo "Enter date in forman YYYY-mm-dd"
    exit
fi

#arr=( "$(ls $ARCHIVEDIR/$OLDDBNAME | grep -E "^$OLDDBNAME.*$ARCHIVEDATE.*(.dump.gz.delta|.dump.gz)\$")" )
#arr=( "$(ls /incrimental/bis_kamin55_psql | grep -E \"^bis_kamin55_psql.*2020-12-04.*(.delta|.dump.gz)\$\")" )
aaa="$(ls /incrimental/bis_kamin55_psql | grep -E "^bis_kamin55_psql.*2020-12-04.*(.delta|.dump.gz)\$")"


echo "$aaa"

echo $DBNAME

if psql -U $USERNAME -h $SERVERNAME -p $PORT -lqt | cut -d \| -f 1 | grep -qw $DBNAME
then
    echo "Database with this name exists on this cluster"
    exit
fi


echo -n "Restore database? (Y/n) "

read answer
case "$answer" in
    Y)
        psql -U $USERNAME -h $SERVERNAME -p $PORT -c 'create database '$DBNAME -d postgres
        if file $DUMPGZ | grep -qw "PostgreSQL custom database dump"
        then
            pg_restore -h $SERVERNAME -U $USERNAME -p $PORT -d $DBNAME -w -Fc $DUMPGZ
        else
            gunzip < $DUMPGZ | psql -h $SERVERNAME -U $USERNAME -p $PORT -d $DBNAME
        fi
        ;;
    *) exit 0
        ;;

При запуске получаем какой то выхлоп от grep

root@PostgreSQL:/home/maintainer# /root/do_restore.sh newdbname bis_kamin55_psql 2020-12-03
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-00.dump.delta
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-06.dump.delta
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-10.dump.delta
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-14.dump.delta
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-18.dump.delta
bis_kamin55_psql_Ii4Ekongaew9jie_daily_2020-12-04-22.dump.delta

Использование: grep [ПАРАМЕТР]… ШАБЛОН [ФАЙЛ]…
Запустите «grep --help» для получения более подробного описания.
Restore database? (Y/n)

Что поменялось?

 

Shulman
()

Что за процессы у меня на сервере поднимаются?

Форум — Admin
Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,5 us,  2,4 sy, 16,8 ni, 80,0 id,  0,0 wa,  0,0 hi,  0,3 si,  0,0 st
КиБ Mem:   8174880 total,  1722064 used,  6452816 free,    35096 buffers
КиБ Swap:  4320252 total,        0 used,  4320252 free.  1353276 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2111 root      39  19    4612   1472   1180 D  36,2  0,0   0:49.59 gzip
 2141 root      39  19    4612   1468   1180 D  14,3  0,0   0:37.17 gzip
 2140 root      39  19    4612   1500   1216 D  13,9  0,0   0:37.29 gzip
 2087 root      39  19  104508   6916   4176 D   4,6  0,1   0:12.38 mysqldump
 2099 root      39  19  104508   6916   4176 D   4,6  0,1   0:12.39 mysqldump
 1267 mysql     20   0  661160 111140  14864 S   2,3  1,4   1:09.72 mysqld
 2110 root      39  19   28368   3456   3096 S   2,3  0,0   0:03.59 tar
  951 root      20   0       0      0      0 S   1,7  0,0   0:12.56 cifsd
   85 root      20   0       0      0      0 S   0,7  0,0   0:03.56 kworker/3:1
 2138 root      39  19   28368   3224   2864 S   0,7  0,0   0:02.86 tar
 2139 root      39  19   28368   3456   3104 S   0,7  0,0   0:01.58 tar

Без видимых при чин плодятся процессы.

root@WebServer:/home/maintainer# locate gzip
/bin/gzip
/usr/lib/apt/methods/gzip
/usr/lib/klibc/bin/gzip
/usr/lib/python2.7/gzip.py
/usr/lib/python2.7/gzip.pyc
/usr/lib/python3.4/gzip.py
/usr/lib/python3.4/__pycache__/gzip.cpython-34.pyc
/usr/share/bash-completion/completions/gzip
/usr/share/doc/gzip
/usr/share/doc/gzip/README-release
/usr/share/doc/gzip/README.gz
/usr/share/doc/gzip/TODO
/usr/share/doc/gzip/changelog.Debian.gz
/usr/share/doc/gzip/copyright
/usr/share/info/gzip.info.gz
/usr/share/man/man1/gzip.1.gz
/usr/share/mime/application/gzip.xml
/usr/share/vim/vim74/autoload/gzip.vim
/usr/share/vim/vim74/doc/pi_gzip.txt
/usr/share/vim/vim74/plugin/gzip.vim
/usr/src/linux-headers-4.4.0-142-generic/include/config/decompress/gzip.h
/usr/src/linux-headers-4.4.0-142-generic/include/config/have/kernel/gzip.h
/usr/src/linux-headers-4.4.0-142-generic/include/config/kernel/gzip.h
/usr/src/linux-headers-4.4.0-142-generic/include/config/rd/gzip.h
/var/lib/dpkg/info/gzip.list
/var/lib/dpkg/info/gzip.md5sums
/var/www/html/libraries/joomla/filesystem/archive/gzip.php
/var/www/html/plugins/editors/++tinymce/jscripts/tiny_mce/tiny_mce_gzip.js
/var/www/html/plugins/editors/++tinymce/jscripts/tiny_mce/tiny_mce_gzip.php
/var/www/html/plugins/editors/jce/tiny_mce/tiny_mce_gzip.js
/var/www/html/plugins/editors/jce/tiny_mce/tiny_mce_gzip.php
/var/www/html/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.js
/var/www/html/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php

И не много ли у меня gzip-ов в системе?

 

Shulman
()

Что не так с pigz в этом скрипте?

Форум — Admin
#!/bin/bash -x

ListOfBases='dblist'
PORT=5433
USERNAME='admin'
SERVERNAME='localhost'
ARCHIVEDIR='/incrimental'
MAXDBCOUNT="1"
TEMPDIR='/cache'
RAMDISKSIZE="6144M"
SUFFIX=''
NETDIR='//192.168.0.15/incrimental'
ERRLOG='/var/log/archive.log'
STARTFILE=''
SERIALNUM=''
CHATID='-327777777'
BOTID='bot14807773775:AAH1y147777MaP_NyXjjjjjzB6uuuSJM'

if [[ 'daily' = $1 ]]
then
    SUFFIX='daily_'$(date +%Y-%m-%d-%H)
fi

if [[ 'monthly' = $1 ]]
then
    SUFFIX='monthly_'$(date +%Y-%m-%d)
fi

if [[ 'hot' = $1 ]]
then
    SUFFIX='hot_'$(date +%Y-%m-%d-%H%M)
fi

if [[ 'weekly' = $1 ]]
then
    SUFFIX='weekly_'$(date +%Y-%m-%d)
fi

if [[ $SUFFIX = '' ]]
then
    echo 'Type monthly, weekly, daily or hot as parametr'
    exit
fi


if mount | grep -qw $NETDIR
then
    echo "Network directory is mounted"
else
    echo "Network direcrory $NETDIR is not mounted" >> $ERRLOG
    MESSAGE="FAIL | pg_dump | PostgreSQL | ${SUFFIX}"
    /usr/bin/curl -s -X POST -H 'Content-Type: application/json' -d '{"chat_id": "'"$CHATID"'", "text": "'"$MESSAGE"'", "disable_notification": false}' https://api.telegram.org/$BOTID/sendMessage
    exit
fi

DBLIST=$(psql -U $USERNAME -p $PORT -l | q -d'|' "select c1 from - where c1 <> '' and c2 <> '' and c1 not like 'template%' and c1 not like '%_bak%' limit 1,$MAXDBCOUNT")

echo "$DBLIST" > ${ARCHIVEDIR}'/'$ListOfBases

mkdir -p "$TEMPDIR"
mount -t tmpfs -o "size=$RAMDISKSIZE" tmpfs "$TEMPDIR"
mkdir ${TEMPDIR}"/temp"

cat $ARCHIVEDIR'/'$ListOfBases | while read DBNAME
do
    mkdir -p ${ARCHIVEDIR}'/'${DBNAME}

    if [[ 'weekly' = $1 ]]
    then
        > ${ARCHIVEDIR}/${DBNAME}'/start'
        STARTFILE=''
    fi

    if ! [[ -e ${ARCHIVEDIR}/${DBNAME}'/start' ]]
    then
        > ${ARCHIVEDIR}/${DBNAME}'/start'
    fi

    STARTFILE="$(cat ${ARCHIVEDIR}/${DBNAME}'/start')"

    if [[ $STARTFILE == '' ]]
    then
        SERIALNUM=$(/usr/bin/pwgen 15 1)
        STARTFILE="${DBNAME}_${SERIALNUM}_${SUFFIX}.dump"
        echo "$STARTFILE" > ${ARCHIVEDIR}'/'${DBNAME}'/start'
        nice -n 19 ionice -c3 pg_dump -d $DBNAME -h ${SERVERNAME} -p $PORT -U ${USERNAME} -w > ${TEMPDIR}/temp/${STARTFILE}
        if [[ $? -ne 0 ]]
        then
            echo "$DBNAME: pg_dump error code is "$? >> $ERRLOG
        fi
        /usr/bin/rdiff signature ${TEMPDIR}/temp/${STARTFILE} ${ARCHIVEDIR}/${DBNAME}/${STARTFILE}.signature
        if [[ $? -ne 0 ]]
        then
            echo "$DBNAME: signature creation error "$? >> $ERRLOG
        fi
        /usr/bin/pigz ${TEMPDIR}/temp/${STARTFILE} > ${ARCHIVEDIR}/${DBNAME}/${STARTFILE}.gz
        if [[ $? -ne 0 ]]
        then
            echo "$DBNAME: start file archiving error "$? >> $ERRLOG
        fi
        rm -f ${TEMPDIR}/temp/${STARTFILE}
    else
        if [ 'hot' = $1 ] || [ 'monthly' = $1 ]
        then
            nice -n 19 ionice -c3 pg_dump -d $DBNAME -h ${SERVERNAME} -p $PORT -U ${USERNAME} -w | pigz > ${ARCHIVEDIR}'/'${DBNAME}'/'${DBNAME}'_'$SUFFIX.dump.gz;
            if [[ $? -ne 0 ]]
            then
                echo "$DBNAME: pg_dump error code is "$? >> $ERRLOG
            fi
        else
            nice -n 19 ionice -c3 pg_dump -d $DBNAME -h ${SERVERNAME} -p $PORT -U ${USERNAME} -w > ${TEMPDIR}/temp/${DBNAME}_$SUFFIX.dump
            if [[ $? -ne 0 ]]
            then
                echo "$DBNAME: pg_dump error code is "$? >> $ERRLOG
            fi
            SERIALNUM=$(echo "$STARTFILE" | sed 's/^.*${DBNAME}_//;s/_weekly.*//')
            /usr/bin/rdiff delta ${ARCHIVEDIR}/${DBNAME}/$STARTFILE.signature ${TEMPDIR}/temp/${DBNAME}_$SUFFIX.dump  ${ARCHIVEDIR}/${DBNAME}/${DBNAME}_${SERIALNUM}_${SUFFIX}.dump.delta
            if [[ $? -ne 0 ]]
            then
                echo "$DBNAME: delta creation error "$? >> $ERRLOG
            fi
            rm ${TEMPDIR}/temp/${DBNAME}_${SUFFIX}.dump
        fi
    fi
done

umount -f "$TEMPDIR"

BackupErr=$(stat $ERRLOG -c %s)

MESSAGE=''

if [[ $BackupErr = 0 ]]
then
    MESSAGE="OK | pg_dump | PostgreSQL | ${SUFFIX}"
else
    MESSAGE="FAIL | pg_dump | PostgreSQL | ${SUFFIX}"
fi

/usr/bin/curl -s -X POST -H 'Content-Type: application/json' -d '{"chat_id": "'"$CHATID"'", "text": "'"$MESSAGE"'", "disable_notification": false}' https://api.telegram.org/$BOTID/sendMessage

В общем pigz жмет архив в этом фрагменте, по времени видно что он работает:

        SERIALNUM=$(/usr/bin/pwgen 15 1)
        STARTFILE="${DBNAME}_${SERIALNUM}_${SUFFIX}.dump"
        echo "$STARTFILE" > ${ARCHIVEDIR}'/'${DBNAME}'/start'
        nice -n 19 ionice -c3 pg_dump -d $DBNAME -h ${SERVERNAME} -p $PORT -U ${USERNAME} -w > ${TEMPDIR}/temp/${STARTFILE}
        if [[ $? -ne 0 ]]
        then
            echo "$DBNAME: pg_dump error code is "$? >> $ERRLOG
        fi
        /usr/bin/rdiff signature ${TEMPDIR}/temp/${STARTFILE} ${ARCHIVEDIR}/${DBNAME}/${STARTFILE}.signature
        if [[ $? -ne 0 ]]
        then
            echo "$DBNAME: signature creation error "$? >> $ERRLOG
        fi
        /usr/bin/pigz ${TEMPDIR}/temp/${STARTFILE} > ${ARCHIVEDIR}/${DBNAME}/${STARTFILE}.gz
        if [[ $? -ne 0 ]]
        then
            echo "$DBNAME: start file archiving error "$? >> $ERRLOG
        fi
        rm -f ${TEMPDIR}/temp/${STARTFILE}

Но результирующий файл пустой то есть вести 0 байт

 ,

Shulman
()

RSS подписка на новые темы