Оказывается, просто:
1. В адресной строке вбить about:config
2. В открывшемся списке опций найти xpinstall.signatures.required и сделать её false
четверг, 11 августа 2016 г.
пятница, 17 июня 2016 г.
MSSQL: подслушать обмен клиентского приложения с сервером
На самом деле иногда бывает сильно интересно, какие sql-запросы посылает клиентское приложение. Если дело происходит под линуксом, через unixodbc, то там легко - приписываем в odbcinst.ini (который находится где-то то ли в /etc, то ли в /usr/local/etc) пару строк:
Во-первых, есть хорошая статья о том, как включить трассировку для клиентов SQL Servera. Вкратце:
1. Стаскиваем и разворачиваем самораспаковывающийся архив по этой ссылке.
2. В реестре находим (или создаём) ветку
"%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\ADONETDiag.dll", если хотим трассировать ADO.NET
или
"%SYSTEMROOT%\SYSTEM32\msdaDiag.dll", если хотим трассировать прочих клиентов (mdac, dao и т.п.)
3. в кучке каталогов из п.1 находим MOF_Files и в нем выполняем команду:
mofcomp all.mof (а чего мелочиться-то)
эта команда компилирует и регистрирует трассировочные схемы (без понятия, что это такое). Результат этой регистрации можно проверить командой:
Logman query providers
4. Затем забираемся в корневой каталог этого распакованного архива и в нем выполняем команду:
Тут есть маленькая тонкость. Если эта команда файл ctrl.guid.all не увидит (ну там, путь неправильно указали, или ещё что-то), она сильно не огорчится, но ничего ловить не будет. Поэтому надо внимательно присмотреться, пишет ли она в момент запуска раздел "Поставщики:" , в котором перечисляет guid-ы механизмов, которые будет отслеживать.
5. Запускаем приложение, которое хотим отследить, и пока мы там работаем, в файле из п.4 копится инфа в неудобоваримом виде.
6. Когда по нашему мнению наловится достаточно информации, завершаем трассировку командой:
7. Наконец, перегоняем информацию из этого Out.etl во что-то более текстовое командой:
Правда, по изучению результата трассировки меня постигло разочарование. Нет, оно там рисует строки подключения, отображает факт обмена с сервером, показывает какие-то адреса и непонятные числа, но и только. Ни одного sql-запроса в явном виде я там не обнаружил.
Этот огорчительный момент вернул меня к старому доброму подслушиванию сети. Обычно я использую Packetyzer, а тут наткнулся на Microsoft Network Monitor 3.4 и решил попробовать его. Там, правда, было написано, что нужно ещё установить дополнительно NMDecrypt, но, по-моему, он ловит всё и так.(*) Для более новых систем есть Microsoft Message Analyzer, но у меня WinXP, так что тут без вариантов. Правда, результатом подслушивания является мешанина данных в кодировке ANSI и UCS-2e, но с этим приходится мириться, главное, что хоть какие-то обрывки получаются в читабельном виде.
* на одной машине потребовалось ещё доустановить Network Monitor Parsers и выбрать в меню Tools - пунт Options - вкладка Parser profiles профиль Default, чтобы программа перестала жаловаться "unable to build conversation"
[ODBC] Trace=Yes TraceFile=/home/huh-muh/sql.logи в своем домашнем каталоге лицезреем весь обмен. Под windows, думалось, должны быть аналогичные механизмы, но всё оказалось чуть-чуть сложнее.
Во-первых, есть хорошая статья о том, как включить трассировку для клиентов SQL Servera. Вкратце:
1. Стаскиваем и разворачиваем самораспаковывающийся архив по этой ссылке.
2. В реестре находим (или создаём) ветку
HKEY_LOCAL_MACHINE\Software\Microsoft\BidInterface\Loaderв которой создаём ключ с именем ":Path" (двоеточие тут вроде как существенно) и значением:
"%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\ADONETDiag.dll", если хотим трассировать ADO.NET
или
"%SYSTEMROOT%\SYSTEM32\msdaDiag.dll", если хотим трассировать прочих клиентов (mdac, dao и т.п.)
3. в кучке каталогов из п.1 находим MOF_Files и в нем выполняем команду:
mofcomp all.mof (а чего мелочиться-то)
эта команда компилирует и регистрирует трассировочные схемы (без понятия, что это такое). Результат этой регистрации можно проверить командой:
Logman query providers
4. Затем забираемся в корневой каталог этого распакованного архива и в нем выполняем команду:
Logman start MyTrace -pf "control_GUID_files/ctrl.guid.all" -o Out.etl -etsв результате чего в этом каталоге создастся файл Out.etl, содержащий интересующую нас трассировку.
Тут есть маленькая тонкость. Если эта команда файл ctrl.guid.all не увидит (ну там, путь неправильно указали, или ещё что-то), она сильно не огорчится, но ничего ловить не будет. Поэтому надо внимательно присмотреться, пишет ли она в момент запуска раздел "Поставщики:" , в котором перечисляет guid-ы механизмов, которые будет отслеживать.
5. Запускаем приложение, которое хотим отследить, и пока мы там работаем, в файле из п.4 копится инфа в неудобоваримом виде.
6. Когда по нашему мнению наловится достаточно информации, завершаем трассировку командой:
Logman stop MyTrace -ets
7. Наконец, перегоняем информацию из этого Out.etl во что-то более текстовое командой:
TraceRPT /y Out.etl
Правда, по изучению результата трассировки меня постигло разочарование. Нет, оно там рисует строки подключения, отображает факт обмена с сервером, показывает какие-то адреса и непонятные числа, но и только. Ни одного sql-запроса в явном виде я там не обнаружил.
Этот огорчительный момент вернул меня к старому доброму подслушиванию сети. Обычно я использую Packetyzer, а тут наткнулся на Microsoft Network Monitor 3.4 и решил попробовать его. Там, правда, было написано, что нужно ещё установить дополнительно NMDecrypt, но, по-моему, он ловит всё и так.(*) Для более новых систем есть Microsoft Message Analyzer, но у меня WinXP, так что тут без вариантов. Правда, результатом подслушивания является мешанина данных в кодировке ANSI и UCS-2e, но с этим приходится мириться, главное, что хоть какие-то обрывки получаются в читабельном виде.
* на одной машине потребовалось ещё доустановить Network Monitor Parsers и выбрать в меню Tools - пунт Options - вкладка Parser profiles профиль Default, чтобы программа перестала жаловаться "unable to build conversation"
воскресенье, 8 мая 2016 г.
msiexec: журналирование
Оказывается, при инсталляции пакета .msi можно включить журналирование. Делается это так:
msiexec /i пакет.msi /L*V имя_файла_журнала.log
воскресенье, 10 апреля 2016 г.
vim: небольшая шпаргалка
Vim при запуске читает настройки из файла ~/.vimrc. Если хочется, чтобы для каждого проекта эти настройки были свои, нужно в ~/.vimrc прописать:
Так или иначе, теперь vim будет сперва искать и подхватывать файлы .vimrc, находящиеся в текущей директории. Например, с таким содержанием:
set exrc set secureВторая строка тут вроде как отключает в vim возможность выполнять из-под себя команды оболочки.
Так или иначе, теперь vim будет сперва искать и подхватывать файлы .vimrc, находящиеся в текущей директории. Например, с таким содержанием:
syntax off set shiftwidth=4 set tabwidth=4 set expandtabНу перестала мне с каких-то пор нравиться подсветка синтаксиса. Это, конечно, сильно упрощало бы чтение кода и ускоряло бы разработку, но я стал совсем казуалом, так что подобные штуки уже непринципиальны.
вторник, 5 апреля 2016 г.
Windows: сбросить лишние терминальные сессии
Если при попытке прицепиться к терминальному серверу по RDP, например, командой
Как оказалось, делается это достаточно просто:
1. Авторизуемся на сервере командой:
2. Просматриваем список терминальных сессий командой:
3. Прибиваем лишние сеансы командой:
mstsc /v:myServerвыдаётся ошибка "Превышено максимальное допустимое количество подключений", то остаётся только одно: выкинуть кого-нибудь из уже подключенных пользователей.
Как оказалось, делается это достаточно просто:
1. Авторизуемся на сервере командой:
net use \\myServer
2. Просматриваем список терминальных сессий командой:
qwinsta /server:myServer
3. Прибиваем лишние сеансы командой:
rwinsta /server:myServer <id сессии>
понедельник, 28 марта 2016 г.
Linux: cron и mpg123
Обновился с ubuntu 14.10 до 15.10 - отвалился будильник.
Ну, то есть, в crontab была строчка:
После обновления эта строчка перестала подавать признаки жизни, зато в /var/log/syslog появились такие интересные сообщения:
Не знаю, что это такое, но побороть как-то удалось. Правда, теперь вышеупомянутая строчка выглядит так:
Ну, то есть, в crontab была строчка:
30 07 * * 1-5 huhmuh /home/huhmuh/budilnik.shкоторая успешно выполняла скрипт budilnik.sh:
#!/bin/sh mpg123 -l 0 "/home/huhmuh/budilnik.mp3"возвращавший меня в реальность каждое утро.
После обновления эта строчка перестала подавать признаки жизни, зато в /var/log/syslog появились такие интересные сообщения:
pulseaudio[12765]: [pulseaudio] source.c: Default and alternate sample rates are the same. pulseaudio[12765]: [pulseaudio] socket-server.c: bind(): Адрес уже используется pulseaudio[12765]: [pulseaudio] module.c: Failed to load module "module-esound-protocol-unix" (argument: ""): initialization failed. pulseaudio[12765]: [pulseaudio] main.c: Module load failed. pulseaudio[12765]: [pulseaudio] main.c: Не удалось инициализировать демон. pulseaudio[12762]: [pulseaudio] main.c: Не удалось запустить демон.
Не знаю, что это такое, но побороть как-то удалось. Правда, теперь вышеупомянутая строчка выглядит так:
30 07 * * 1-5 huhmuh export XDG_RUNTIME_DIR=/run/user/1000 && /home/huhmuh/budilnik.sh(конкретное значение переменной окружения XDG_RUNTIME_DIR подсмотрел командой printenv)
понедельник, 25 января 2016 г.
Подписаться на:
Сообщения (Atom)