Архив записей

BAT-файл: разные действия в зависимости от времени запуска

Недавно столкнулся с небольшим кейсом по автоматизации, если не вдаваясь в детали, то заказчик хочет чтобы один и тот же сценарный файл (BAT) выполнял разные действия в зависимости от того, в какой временной промежуток он запущен. Предположим, что временные интервалы у нас 21:00-9:00 (условно ночь) и 9:00-21:00 (условно день). Как известно, в bat-файлах оператора OR нет, но вместо этого можно сделать конструкцию из двух IF таким образом, что по результатам условий (которые просто можно перечислить построчно) мы присвоим булево значение некоему флагу, а потом, в зависимости от значения флага, перейдем через GOTO на разные секции и выполним разные действия.

ЧИТАТЬ ДАЛЕЕ


Кастомная микросборка WinXP

Несмотря на то, что прошло уже более 20 лет, мне все еще нравится Windows XP. Нравится её быстродействие, нравится отсутствие всяких ограничений (которых хватает в Windows 10/11) и многие другие вещи. Конечно, использовать Windows XP на современном железе — дело по многим причинам сомнительное, однако я частенько с удовольствием создаю виртуальные машины под управлением Windows XP для различного рода проектов — а в качестве установочного образа использую специальную самопальную сборку. Нет, это не какой-нибудь ZverCD, где стараниями какого-то «сборщика Васяна» стабильность работы отсутствует по умолчанию, а количество «интегрированного» софта превышает все мыслимые пределы; отнюдь, я хочу показать крайне минималистичный образ из которого вырезано практически все.

ЧИТАТЬ ДАЛЕЕ


SIP звонок через GET-запрос

На компьютерах под управлением MS Windows я обычно пользуюсь SIP-клиентом PhonerLite. Недавно вышло обновление этой замечательной звонилки — теперь она оснащена Telnet-сервером, к ней можно подключаться удаленно и отдавать такие команды, как «положить трубку», «ввести номер в наборное поле», «начать дозвон» и другие. А тут как раз один из заказчиков обратился с запросом возможности совершать SIP звонок на GSM-контроллер нажатием на кнопку в HTML-странице — в общем, все звезды сошлись.

Вот маленькая самописная утилита, которая с одной стороны принимает GET-запросом номер абонента, а с другой стороны — подключается к PhonerLite через Telnet и отдает последнему команду на набор ранее полученного номера. Никаких фреймворков не требует, в конфигурационном файле задаются некоторые параметры (порт на котором стартует веб-сервер, да реквизиты Telnet на случай, если утилита и PhonerLite запущены на разных устройствах). Возможно, кому-то она сослужит такую же хорошую службу, как и мне.


Консольный SIP-клиент PJSUA для Win64

Для одного из проектов возникла потребность в софтфоне, управляемом из командной строки, сам проект, разумеется, для MS Windows. Почти с десяток разных линуксоидов-телефонистов говорили, что для MS Windows такого нет, но это не совсем так. Опенсорсный SIP-клиент PJSUA собирался в т.ч. для MS Windows, но ссылки на бинарные сборки давным-давно стухли, поэтому я попросил своего хорошего друга скомпилировать исходники заново — держите бинарник PJSUA для Win64, собран с помощью VC14 (и может потребовать соответствующих распространяемых наборов библиотек).


Получение пароля архива бэкапа Bitrix

Во многих организациях использующих лицензионный Битрикс настроено автоматическое резервирование Битрикса в «облако». Как правило, когда встает вопрос о миграции, никто не в курсе, какой пароль выставлен на архив резервной копии. Если есть доступ в админку Битрикса, тогда все просто. Переходим в раздел «Настройки», вкладка «Инструменты», далее — «Командная PHP-строка». В неё помещаем следующий скрипт для выполнения на сервере:

require($_SERVER[″DOCUMENT_ROOT″].″/bitrix/modules/main/classes/general/backup.php″);
var_dump(CPasswordStorage::Get(‘dump_temporary_cache’));

После выполнения будет возвращена строка с искомым паролем.
А еще лучше — не используйте Битрикс вовсе.


Снятие дампа базы MySQL и импорт

В очередной раз напоминаю себе, что снятие дампа базы MySQL с сервера под управлением Linux делается так:

mysqldump -v -h127.0.0.1 -uroot -p dbname > /tmp/dbname_dump.sql

И импорт на сервер, под управлением Windows, делается так:

С:\MySQL\bin\mysql.exe -u root -p dbname < T:\dbname_dump.sql


Таймаут в файлах сценариев командной строки

Эта микрозаметка повествует о том, что достаточно часто я продолжаю натыкаться на использование конструкции ping localhost в целях обеспечения задержки между командами в bat-файле, но для этих же целей и даже чуть больше (когда нужно сделать задержку более четырех условных секунд, то иной раз городят несколько пингов подряд) можно и нужно использовать команду timeout X, где X — это время задержки в секундах.