Результаты по запросу:

    Импортим:
    import time
    
    Вставляем в начало кода строчку:
    startTime = time.time()
    
    Далее по мере необходимости добавляем метки времени:
    print("THIS FUNCTION TIME: %s" % str(time.time() - startTime))
    
    На выходе получаем время исполнения:
    THIS FUNCTION TIME: 18.688228130340576
    
    Чтобы отключить защищенные каталоги /tmp systemd нужно отредактировать файлы сервисов, для которых это нужно:
    Пример для httpd
    Путь к сервису: /etc/systemd/system/multi-user.target.wants/httpd.service
    Параметр отвечающий за это PrivateTmp ставим в false (PrivateTmp=false)
    setfont UniCyr_8x16
    Меняем в /etc/vconsole.conf FONT="UniCyr_8x16"
    ### Open the Rails console. This may take a moment to load.
    sudo gitlab-rails console
    
    ### Find builds with artifacts
    builds_with_artifacts = Ci::Build.with_artifacts_archive
    
    ### Clear out eveything more than a week old. You can adjust this time range to your preference
    builds_to_clear = builds_with_artifacts.where("finished_at < ?", 1.week.ago)
    builds_to_clear.each do |build|
      build.artifacts_expire_at = Time.now
      build.erase_erasable_artifacts!
    end
    
    Если при отправке уведомлений выскакивает табличка с ошибкой:
    avax.mail.MessagingException: Could not connect to SMTP host: ***, port: 465; nested exception is:
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
    PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
    
    То лечим добавлением сертификата в доверенные прямо через админку youtrack'a: SSL - сертификаты -> Импортировать доверенный сертификат.
    SELECT 
        DB_NAME(dbid) as DBName, 
        COUNT(dbid) as NumberOfConnections,
        loginame as LoginName
    FROM
        sys.sysprocesses
    WHERE 
        dbid > 0
    GROUP BY 
        dbid, loginame
    
    Импортируем новые сертификаты в хранилище. Запоминаем отпечаток нового сертификата:
    Далее требуется удалить старые хеши сертификатов с рабочих служб: ...
    1. Останавливаем виртуалку
    2. Увеличиваем размер диска через клиент в настройках виртуалки (Перед этим необходимо удалить все снапшоты этой виртуалки)
    3. Стартуем виртуалку
    4. Инициализируем новое свободное место: fdisk /dev/sda
    5. Создаем новый LVM раздел:pvcreate /dev/sda3
    6. Добавляем LVM раздел: vgextend lvm_razdel (можно посмотреть в /dev/vg или pvdisplay) /dev/sda3
    7. Расширяем: lvextend -L +95G /dev/vg_vsweb05/lv_root
    8. И ресайзим фс под новый размер: resize2fs /dev/vg_.../lv_root
    Что есть:
    Centos; 
    Локальный ip 192.168.0.2, маска /24, шлюз 192.168.0.1;
    Внешний ip 86.86.86.86, маска /27, шлюз 86.86.86.85;
    
    Необходимо, чтобы трафик приходящий на внешний интерфейс обрабатывался нужной карточкой, а не шлюзом по умолчанию. Весь основной трафик будем гнать через дефолтный шлюз 192.168.0.1. Для остального трафика необходимо прописать роуты (для примера возьмем гугловые сервера 8.8.8.8 и 8.8.4.4). Решение: ...
    location ~ (?^.*/[^/.]+$) {
    return 301 http://$host$url/$is_args$args;
    }
    
    Начиная с 7 версии Centos по умолчанию ставится firewalld. Для отката к привычному iptables следующие шаги:
    systemctl stop firewalld
    systemctl mask firewalld
    
    yum install iptables-services
    systemctl enable iptables
    
    Далее работам с iptables как обычно

    Заходим на сервер ZIMBRA.

    su zimbra
    zmprov mcf zimbraGalInternalSearchBase ROOT
    zmprov mcf zimbraGalSyncInternalSearchBase ROOT
    

    Остается только перезагрузить Zimbr'у

    all_accounts=`zmprov -l gaa`;
    for account in $all_accounts;
    do mbox_size=`zmmailbox -z -m $account gms`;
    echo "Mailbox size of $account = $mbox_size";
    done ;
    Скрипт на питоне:
    #!/usr/bin/env python
    import subprocess
    
    accs = {
    'info@test.ru': 'povP8Pa49P',
    'vozvrat@test.ru': 'XQkqN97CPj',
    }
    
    for email, password in accs.items():
            print "zmprov ca "+email+" "+password
            subprocess.check_output("zmprov ca "+email+" "+password, shell=True)
            print "OK"
    
    Можно добавить опций для смены дефолтного шаблона https://wiki.zimbra.com/wiki/Zmprov_Examples

    Иногда возникает необходимость получать все письма, которые приходят на ящики домена, в один ящик. Делается в одну команду:

    zmprov modifyAccount catchtest@domen.ru zimbraMailCatchAllAddress @domen.ru
    
    Подробней здесь Managing_Domains
    yum install epel-release -y
    yum update -y
    

    Change ssh port

    Change sudoers

    Change zabbix config

    yum install https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm -y
    yum install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm -y
    yum install nano mc wget ntp ntpdate iptraf tcpdump traceroute nmap htop net-tools fail2ban -y
    systemctl enable ntpd
    systemctl enable zabbix-agent
    systemctl enable fail2ban
    systemctl stop firewalld
    systemctl mask firewalld
    yum install iptables-services
    systemctl enable iptables
    reboot
    
    Узнаем id контакта:
    zmmailbox -z -m test@test.ru gact -v
    
    Удаляем контакт:
    zmmailbox -z -m test@test.ru dct 107650
    

    Если вылезает на какое-то действие ошибка: ERROR: zclient.IO_ERROR (invoke sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed, server: localhost) (cause: javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed), то нужно обновить сертификат:

    su zimbra
    cd ~
    /opt/zimbra/bin/zmcertmgr createcrt -new -days 3650
    /opt/zimbra/bin/zmcertmgr deploycrt self
    zmcontrol restart
    

    CTRL+A Перемещает курсор в начало строки

    CTRL+E Перемещает курсор в конец строки

    CTRL+F Перемещает курсор на один символ вперед; действует так же, как клавиша со стрелкой вправо

    CTRL+B Перемещает курсор на один символ назад; действует так же, как клавиша со стрелкой влево

    CTRL+L Очищает экран и устанавливает курсор в левый верхний угол. То же самое делает команда clear

    ALT+F Перемещает курсор на одно слово вперед

    ALT+B Перемещает курсор на одно слово назад

    Добавление (скан новых устройств):

    echo "- - -" >/sys/class/scsi_host/hostX/scan (X - 0,1,2)

    Обновление (например изменился размер устройства):

    echo 1 > /sys/class/block/sda/device/rescan

    Качаем клинер из источника: https://github.com/n0madic/gitlab-registry-images-cleaner
    Либо: gitlab_cleaner.zip
    Правим gricleaner.ini:

    [Gitlab]
    User = admin_user
    Password = admin_password
    JWT URL = https://git.domain.com/jwt/auth
    Registry URL = https://docker.domain.com
    
    [Cleanup]
    Minimum Images = 10
    Retention Days = 120
    

    Запускаем:

    ./gricleaner.py -v -d 20
    

    -v - Дебаг мод
    -d - За какое кол-во дней оставить образы

    Если вылезает ошибка: "Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target", то проблема в просроченном/недостоверном сертификате. Т.к. обычно для ad никто сертификат нормальный не покупает, его нужно импортировать как доверенный в среду конфлюенса.

    openssl s_client -connect 192.168.101.5:636 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > public.crt
    /opt/atlassian/confluence/jre/bin/keytool -import -alias somename -keystore /opt/atlassian/confluence/jre/lib/security/cacerts -file public.crt
    

    Дефолтный пароль для keytool : changeit

    При появлении такой ошибки в логах centos'a (/var/log/messages), либо какого-нибудь процесса (apache, nginx, mysqld), необходимо увеличить лимиты, установленные в ОС. Для этого добавить строчки:

    /etc/sysctl.conf
    fs.file-max = 999999
    

    ### Здесь приведен пример для пользователя, под которым работает mysqld

    /etc/security/limits.conf
    mysql         soft    nofile           999999
    mysql         hard    nofile           999999
    

    И необходимо перелогиниться под этим пользователем.

    Либо выполнить команду от его имени: ulimit -n 999999 для временного задания переменной.

    Конвертация сертификатов в разные форматы
    Certificates 
    Converting PEM encoded certificate to DER
    openssl x509 -outform der -in certificate.pem -out certificate.der
     
    Converting DER encoded certificate to PEM
    openssl x509 -inform der -in certificate.cer -out certificate.pem
     
    Converting PEM encoded certificates to PKCS7 (P7B)
    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
     
    Converting PKCS #7 (P7B) to PEM encoded certificates
    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
     
    Certificates and Keys
    Converting PEM encoded Certificate and private key to PKCS #12 / PFX
    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
     
    Converting PKCS #7 (P7B) and private key to PKCS #12 / PFX
    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
     
    Converting PKCS #12 / PFX to PKCS #7 (P7B) and private key
    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    
    select  t.name as TableName, Min(t.create_date) as CreateDate, ds.name as FileGroupName, SUM(u.total_pages) * 8 / 1024 as SizeMB 
    from sys.tables as t
    inner join sys.partitions as p on t.object_id = p.object_id
    inner join sys.allocation_units as u on p.partition_id = u.container_id
    inner join sys.data_spaces as ds on u.data_space_id = ds.data_space_id
    group by t.name, ds.name
    order by SizeMB desc
    
    Для телефонов марки Digium есть несколько вариантов provision: через xml файлы, через модуль астериска dpma. Настроим dpma.

    1. Дли использования модуля dpma необходимо получить лицензию с сайта digium. Для этого нужно заказать бесплатную лицензию DPMA на официальном сайте производителя: http://store.digium.com/productview.php?product_code=804-00032 . После того, как ключ пришел на почту можно продолжать. Скачиваем утилиту для получения лицензии...

    set nocount on
    declare @databasename varchar(100)
    declare @query varchar(max)
    set @query = ''
    
    set @databasename = 'databasename'
    if db_id(@databasename) < 4
    begin
    	print 'system database connection cannot be killeed'
    return
    end
    
    select @query=coalesce(@query,',' )+'kill '+convert(varchar, spid)+ '; '
    from master..sysprocesses where dbid=db_id(@databasename)
    
    if len(@query) > 0
    begin
    print @query
    	exec(@query)
    end
    
    CREATE TRIGGER [IP2user_block]
    ON ALL SERVER 
    FOR LOGON
    AS
    BEGIN
    /* Логирование отработки тригера
    DECLARE @IP NVARCHAR(MAX)=(SELECT DISTINCT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID);
    DECLARE @body1 NVARCHAR(MAX)='Login: ' + ORIGINAL_LOGIN() + 'IP: ' + @IP; */
    
    
    IF ORIGINAL_LOGIN()!= 'User' AND (SELECT DISTINCT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID)='xxx.xxx.xxx.xxx'
    BEGIN
    ROLLBACK;
    INSERT INTO test.dbo.test2 (test) values (@body1);
    END;
    END;
    
    GO
    SET ANSI_NULLS OFF
    GO
    
    SET QUOTED_IDENTIFIER OFF
    GO
    
    ENABLE TRIGGER [IP2user_block] ON ALL SERVER
    GO
    
    

    Лечение:

    Необходимо добавить строчку в конец конфигурационного файла виртуалки (.vmx) rtc.diffFromUTC=0.

    Для этого:

    1. Отключить виртуалку;

    2. Зайти по ssh на esxi;

    3. Отредактировать файл /vmfs/volumes/datastore_name/vm_name/*.vmx;

    4. Запустить виртуалку.

    Часто ошибка возникает если на этом же сервере установлен nginx. В какой-то момент апач перестает работать. В логах кроме Configuration Failed ничего нет, хотя конфиги вы не правили и даже возвращение к дефолтным не спасают. Проблема кроется в лимите семафоров. Увеличить можно командой:
    sysctl -w kernel/sem="250 32000 32 XXX"
    
    Где XXX - количество семафоров. Либо перманентно через файл /etc/sysctl.conf
    В терминологии сетей TCP/IP маской сети или маской подсети (network mask) называется битовая маска (bitmask), определяющая, какая часть IP-адреса (ip address) узла (host) сети относится к адресу сети, а какая - к адресу самого узла в этой сети. Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.0.0 находится в сети 12.34.0.0. Чтобы получить адрес сети, зная IP-адрес и маску подсети, необходимо применить к ним операцию поразрядной конъюнкции (логическое И). Например, в случае более сложной маски: ...
    При подключении к базе выходит ошибка 'Unable to complete network request to host . Failed to locate host machine. Undefined service gds_db/tcp error?' Сначала проверяем на работоспособность сервера и его сетевую доступность:
    telnet server-address 3050
    
    Если вссе ок, а ошибка продолжает сыпаться,то:
    system32\drivers\etc\services
    Добавить строчку
    gds_db 3050/tcp
    
    ORM:
    INSERT:
    >>> agent_status = agents(agent=phone, status=1, queue=queue_number, paused=0)
    >>> agent_status.save()
    
    DELETE:
    >>> p = Publisher.objects.get(name="O'Reilly")
    >>> p.delete()
    
    Update:
    >>> b5.name = 'New name'
    >>> b5.save()
    
    Есть несколько причин для ведения репликации баз данных:
    1. Производительность и масштабируемость. Один сервер может не справляться с нагрузкой, вызываемой одновременными операциями чтения и записи в БД. Выгода от создания реплик будет тем больше, чем больше операций чтения приходится на одну операцию записи в вашей системе.
    2. Отказоустойчивость. В случае отказа реплики, все запросы чтения можно безопасно перевести на мастера. Если откажет мастер, запросы записи можно перевести на реплику (после того, как мастер будет восстановлен, он может принять на себя роль реплики).
    3. Резервирование данных. Реплику можно «тормознуть» на время, чтобы выполнить mysqldump, а мастер — нет. (Существует способ hotcopy баз данных MySQL !!!ссылка!!!)
    ...

    Удаление всех файлов в каталоге => find /catalog/some -type f | xargs shred -v -n 1 -u -z

    -n 1 - количество перезаписей файла

    -z - забить нулями

    -v - verbose

    Для разделов dd if=/dev/urandom of=/dev/sda1 bs=1M

    Скрипт вешаем в планировщик:
    exec sp_msforeachdb 'use [?];
    if "?" not in ( "master", "msdb", "tempdb", "model" )
    
    begin
    declare @dbname varchar(255);
    declare @filename varchar(255);
    declare @string varchar(200);
    
    SELECT @dbname = DB_NAME();
    // Если тип восстановления full
    SELECT @string="ALTER DATABASE [" + @dbname + "] SET RECOVERY SIMPLE WITH NO_WAIT";
    EXEC(@string)
    
    SELECT @filename = name FROM sys.database_files WHERE type = 1;
    SELECT @string="DBCC SHRINKFILE (" + @filename + ")";
    EXEC(@string)
    print @string
    
    SELECT @string="ALTER DATABASE [" + @dbname + "] SET RECOVERY FULL WITH NO_WAIT";
    EXEC(@string)
    
    end
    '
    

    Если звонок был в очереди, то надо добавить параметр c для продолжения звонка после того как оператор повесил трубку. Так же требуется проверить был ли отвечен звонок, ибо в другом случае не стоит спрашивать клиента оценить звонок

    exten => _X.,n,Queue(test,txXc)
    exten => _X.,n,Macro(mark)
    
    [macro-mark]
    exten => s,1,NOOP(QUEUESTATUS: ${QUEUESTATUS})
    same => n,GotoIf( $[ "${QUEUESTATUS}" = "TIMEOUT" ]?gohang)
    
    same => n,Read(MARK,voprosy1,1,,2,10)
    same => n,GotoIf( $[ ${ISNULL(${MARK})} = 0 ]?nextq)
    same => n,SET(MARK=999)
    same => n(nextq),SET(ODBC_MARK_REG(${UNIQUEID},${MARK},"1")=1)
    same => n,Wait(2)
    same => n,Read(MARK2,voprosy2,1,,2,10)
    same => n,GotoIf( $[ ${ISNULL(${MARK2})} = 0 ]?nextq2)
    same => n,SET(MARK2=999)
    same => n(nextq2),SET(ODBC_MARK_REG(${UNIQUEID},${MARK2},"2")=1)
    
    same => n,GotoIf( $[ ${MARK2} = 999 & ${MARK} = 999 ]?gohang)
    

    Для оценки исходящего звонка:
    F(context,exten,priority) - Когда вызывающий абонент завершает вызов, переадресовать вызываемого абонента аналогично GoTo по указанному назначению и выполнить.
    F - если вызывающий абонент завершает вызов а параметры не заданы, перейти на 'n' следующий приоритет в текущем контексте.
    g - Когда вызов завершен вызываемой стороной (в отличии от опции F), выполнить следующий приоритет в текущем контексте.
    G - Если вызов отвечен, переадресовать вызывающую сторону на указанный приоритет(context,exten,priority), а вызываемую на указанный приоритет плюс 1.

    Например:

    exten => s,n,Dial(SIP/test/3444,120,F(SetOutMark,${EXTEN},1))
    
    [SetOutMark]
    exten => s,1,Read(MARK,custom/mark_q,1,,2,10)
    exten => s,n,SET(ODBC_MARK_REG(${MARK},${UNIQ_ORIG})=1)
    exten => s,n,Playback(custom/spasibo_mark)
    exten => s,n,Hangup()
    
    1. Создать пользователя
    2. Зайти под пользователем
    3. Выйти из под польователя
    4. Под администратором, перенести папку C:/USERS/*Имя пользователя* в нужную директорию
    5. Открываем реестр и идем по пути
      HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS NT/CURENT VERSION/PROFILELIST
      
    6. Ищем папку с настройками данного пользователя, и находим в не параметр ProfileImagePath который содержит полный путь к профилю пользователя
    7. Изменяем этот стандарный путь на нужный (куда перенесли учетную запись)
    8. Из папки C:/USERS можно удалить папку пользователя (если она была скопирована)
    9. Выставляем необходимые права на папку
    10. Можно заходить под пользователем
    Стандартное расположение PST файлов Outlook 2010 Пуск - Выполнить и введите
    %localappdata%\Microsoft\Outlook\
    
    Перенос каталога расположения PST файлов Outlook 2010 Пуск - Выполнить - Regedit и перейдите на следующий путь:
    HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\
    
    Кликните правой кнопкой по папке Outlook, выберите Создать (New) - Расширяемый строковый параметр (Expandable String Value) и назовите его ForcePSTPath Откройте новый ключ и введите путь, где будут лежать файлы PST. Далее, при создании новых учётных записей Outlook будет создавать файлы в указанном каталоге.