my scripts
четверг, 10 октября 2019 г.
среда, 17 апреля 2019 г.
Пример проверки пользователя в LDAP
import ldap
c = ldap.initialize("ldap://ldap.loc")
# Fix for MS AD
# https://www.python-ldap.org/en/latest/faq.html
c.set_option(ldap.OPT_REFERRALS, 0)
# Сначала получаем данные юзера от админа
c.bind_s('admin', 'admin_pass')
res = c.search_s('dc=ldap,dc=loc', ldap.SCOPE_SUBTREE, "SAMAccountName=USER",['objectclass'], 1)
new_cred = res[0][0]
# Теперь пробуем подключиться как нужный юзер
c.bind_s(new_cred, 'user_pass')
print "OK"
c = ldap.initialize("ldap://ldap.loc")
# Fix for MS AD
# https://www.python-ldap.org/en/latest/faq.html
c.set_option(ldap.OPT_REFERRALS, 0)
# Сначала получаем данные юзера от админа
c.bind_s('admin', 'admin_pass')
res = c.search_s('dc=ldap,dc=loc', ldap.SCOPE_SUBTREE, "SAMAccountName=USER",['objectclass'], 1)
new_cred = res[0][0]
# Теперь пробуем подключиться как нужный юзер
c.bind_s(new_cred, 'user_pass')
print "OK"
вторник, 30 января 2018 г.
python+yaml
yum install python-pip
pip install pyyaml
pip install pyyaml
down voteaccepted |
|
Или вообще так
Dict = yaml.load(open('filename'))
Хотя он только yaml 1.1, и
Do not use PyYAML, it is long dead, use ruamel.yaml.
from ruamel import yaml
понедельник, 3 июля 2017 г.
json in bash
https://stackoverflow.com/questions/1955505/parsing-json-with-unix-tools
1) jq
2) python
1) jq
curl -s 'https://api.github.com/users/lambda' | jq -r '.name'
Python 2:
export PYTHONIOENCODING=utf8
curl -s 'https://api.github.com/users/lambda' | \
python -c "import sys, json; print json.load(sys.stdin)['name']"
Python 3:
curl -s 'https://api.github.com/users/lambda' | \
python3 -c "import sys, json; print(json.load(sys.stdin)['name'])"
пятница, 19 августа 2016 г.
python: ошибка SyntaxError: invalid token у rpmbuild
Для питона достаточно бесполезный функционал компилирования иногда ломает сборку пакета. Фикс - в spec файл в начало добавляем
%global _python_bytecompile_errors_terminate_build 0
%global _python_bytecompile_errors_terminate_build 0
пятница, 25 декабря 2015 г.
формирование tiff файла в ImageMagick
У tiff для отправки через факс есть ряд требований, искать RFC про TIFF-F.
Пример конвертации в ImageMagick
convert -density 204x196 -units PixelsPerInch -resize 1728x -monochrome -compress Fax IN OUT
Пример конвертации в ImageMagick
convert -density 204x196 -units PixelsPerInch -resize 1728x -monochrome -compress Fax IN OUT
где IN и OUT - входной и выходной файлы.
Также можно задать photometric interpretation:
-define quantum:polarity=min-is-black
-define quantum:polarity=min-is-white
density может меняться, варианты смотреть в RFC (начинать с 2306), вероятно можно задать и просто -density 204 (но что тогда будет со вторым значением?)
Вообще хорошо взять пришедший тифф за основу и через identify сравнивать, что получается у нас и в готовом файле, при этом крайне желательно иметь оригинал факс-файла и конвертировать его же.
четверг, 17 декабря 2015 г.
python mailers
Совсем простой вариант - через email
https://docs.python.org/2/library/email-examples.html
Можно взять небольшую обёртку mailer, но размер кода оно сильно не уменьшит, а зависимость добавит.
Ими легко слать через системный почтовик и системные очереди. Если требуется подключаться к тому же gmail - код несколько усложняется - добавляются шаги авторизации, starttls итд, и тогда добавляется библиотека smtplib (или всякие yagmail)
Когда требуется поддержка юникода, добавляется она не сложно, только надо помнить что некоторые заголовки типа Subject, From, To требуют особого кодирования, недопустимо просто писать юникод-строку, так делают только быдлокодеры. Должно быть так:
from email.header import Header
msg = MIMEMultipart()
Если используются фреймворки типа flask, там обычно есть свои обёртки/реализации, тот же flask-mailer
Также есть пакеты для более массовой рассылки, на базе шаблонов, тот же pymassmailer
https://docs.python.org/2/library/email-examples.html
Можно взять небольшую обёртку mailer, но размер кода оно сильно не уменьшит, а зависимость добавит.
Ими легко слать через системный почтовик и системные очереди. Если требуется подключаться к тому же gmail - код несколько усложняется - добавляются шаги авторизации, starttls итд, и тогда добавляется библиотека smtplib (или всякие yagmail)
Когда требуется поддержка юникода, добавляется она не сложно, только надо помнить что некоторые заголовки типа Subject, From, To требуют особого кодирования, недопустимо просто писать юникод-строку, так делают только быдлокодеры. Должно быть так:
from email.header import Header
msg = MIMEMultipart()
msg['Subject'] = "%s" % Header(subject, 'utf-8') - вообще тут надо отделить имя от адреса и преобразовать только имя, или наоборот склеивать преобразованное имя с адресом. Под рукой нет готового примера. При этом итоговый вариант будет таким:
From: =?UTF-8?B?0J0J0J0J0J0J=?= <mail@mail.me>
С текстом проще
msg.attach(MIMEText(text, 'plain', "UTF-8"))
msg.attach(MIMEText(html, 'html', 'UTF-8'))
Если используются фреймворки типа flask, там обычно есть свои обёртки/реализации, тот же flask-mailer
Также есть пакеты для более массовой рассылки, на базе шаблонов, тот же pymassmailer
Подписаться на:
Сообщения (Atom)