import timeВставляем в начало кода строчку:
startTime = time.time()Далее по мере необходимости добавляем метки времени:
print("THIS FUNCTION TIME: %s" % str(time.time() - startTime))На выходе получаем время исполнения:
THIS FUNCTION TIME: 18.688228130340576
### 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
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; }
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
Установка на Centos 7: https://deviantengineer.com/2017/02/bookstack-centos7/
Иногда возникает необходимость получать все письма, которые приходят на ящики домена, в один ящик. Делается в одну команду:
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
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
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. Запустить виртуалку.
sysctl -w kernel/sem="250 32000 32 XXX"Где XXX - количество семафоров. Либо перманентно через файл /etc/sysctl.conf
telnet server-address 3050Если вссе ок, а ошибка продолжает сыпаться,то:
system32\drivers\etc\services Добавить строчку gds_db 3050/tcp
>>> 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()
Удаление всех файлов в каталоге => 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()
HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS NT/CURENT VERSION/PROFILELIST
%localappdata%\Microsoft\Outlook\Перенос каталога расположения PST файлов Outlook 2010 Пуск - Выполнить - Regedit и перейдите на следующий путь:
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Кликните правой кнопкой по папке Outlook, выберите Создать (New) - Расширяемый строковый параметр (Expandable String Value) и назовите его ForcePSTPath Откройте новый ключ и введите путь, где будут лежать файлы PST. Далее, при создании новых учётных записей Outlook будет создавать файлы в указанном каталоге.