Или это я чего-то не понимаю, или таки в консерватории что-то не так. Но я в любом случае не понимаю.
Установил я себе программу для учёта домашних финансов. У меня такое бывает время от времени, я начинаю считать куда уходят мои кровно заработанные. Потом расстраиваюсь, бросаю это дело. Нынче очередной виток, видимо.
Ну так вот, установил я на домашний комп программу Homebank. Для Linux, версия 4.5.5. Занёс туда свои доходы/расходы. А на следующий день поставил эту программку ещё и на работе, чтобы сразу же, оперативно заносить туда данные, дабы не забыть ничего. Файл данных синхронизируется через Dropbox, всё хорошо. Казалось бы.
А сегодня вечером мне домашняя версия Homebank и говорит человеческим голосом, что не может открыть файл данных, так как он создан в более новой версии программы. Опаньки? Опаньки. Оказывается, версия для Windows имеет номер уже 5.1.5 и формат данных там как бы другой, несовместимый со старым. И в ЧаВо (в оригинале FAQ) написано, что если вы не хотите иметь проблем, то имейте везде новейшую версию программы. Не, я не против, только где ж её взять для моей Убунточки, новейшую-то? Разве что из исходников собрать, но это как-то фу.
Но самое забавное выяснилось вот буквально только что. Оказывается, что данные сохраняются в XML-формате. Это почти обычный текстовый файл, но с дополнительной разметкой. В общем, его может прочитать и понять не только программа, но и человек. И там в самом начале написано про версию программы буквально следующее: <homebank v="1.2" d="050105">
А в старом, который я уже создал с горя, думая, что придётся снова всё заполнять, написано так: <homebank v="0.69999999999999996">
Стоило поменять эту строчку, как всё заработало. Ну и вот нафига это было делать?
пятница, 16 июня 2017 г.
четверг, 8 июня 2017 г.
Автоматический костыль для Thunderbird
Вообще почтовыми клиентами я пользуюсь исключительно на работе. По разным причинам. Одна из причин - есть у меня маленький, но гордый локальный почтовый сервер, который нужен, чтобы разные скрипты могли отправлять мне уведомления о результатах своей работы. В качестве клиента использую известный многим Mozilla Thunderbird. И вот с этим Thunderbird-ом стали происходить какие-то странные вещи. Иногда бывает, что хочешь удалить письмо, а оно не удаляется! Как так?! Оказывается, по непонятным причинам пропадает файл Trash, в котором, собственно, и должны храниться удалённые сообщения. Ну вот пропадает и всё тут. В принципе, достаточно закрыть Thunderbird, создать в нужном месте этот файл и снова запустить почтовик. Но это же каждый раз нужно руками найти этот нужный каталог, создать там файл... В общем, я написал скрипт, который делает это всё сам, по расписанию в планировщике. Утром, за пару минут до начала рабочего дня, планировщик запускает мой скриптик, который проверяет существование файла Trash, при необходимости - создаёт.
Но если вдруг случилось так, что "Удалённые" пропадут в процессе работы, то можно запустить скрипт вручную (у меня есть средство для быстрого запуска нужных программ, долго искать не придётся), с параметром START (на самом деле - просто с параметром), тогда после создания файла Trash снова запустится Thunderbird, и можно будет продолжить работу.
Я чёртов гений! :-)
@ECHO OFF IF NOT EXIST "d:\home\user\Thunderbird\Profiles\kpya8y83.default\Mail\mail.mydomain.ru\Trash" ( TYPE nul > "d:\home\user\Thunderbird\Profiles\kpya8y83.default\Mail\mail.mydomain.ru\Trash" ECHO ===================================== >> %~dp0\create_trash.log ECHO File "Trash" successfully created at >> %~dp0\create_trash.log DATE /t >> %~dp0\create_trash.log TIME /t >> %~dp0\create_trash.log ) IF "%1" == "" GOTO END START "" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe" :END
Но если вдруг случилось так, что "Удалённые" пропадут в процессе работы, то можно запустить скрипт вручную (у меня есть средство для быстрого запуска нужных программ, долго искать не придётся), с параметром START (на самом деле - просто с параметром), тогда после создания файла Trash снова запустится Thunderbird, и можно будет продолжить работу.
Я чёртов гений! :-)
четверг, 6 апреля 2017 г.
Скрипт для сбора информации о компьютере
Немного воды
Для понимания на чём же у нас работают люди неплохо бы иметь информацию о "железе" и кое-каких других данных с компьютеров пользователей. Чтобы не лазить на каждый комп Radmin-ом и не отвлекать пользователей от работы, можно воспользоваться утилитами командной строки.
К сожалению, работает только на Windows XP и Windows Server 2003. Для Windows 7 на целевом компьютере нужно совершать дополнительные действия, то есть всё равно лезть Radmin-ом, т.е. весь смысл затеи теряется.
Необходимое ПО
Кроме собственно скриптов нужно следующее ПО:
- Утилита CPU-Z. Можно взять на любимом файл-сервере. Или на сайте разработчика: http://www.cpuid.com/softwares/cpu-z.html Работает без установки, просто распаковать в любимый каталог.
ВАЖНО! В файле cpuz.ini нужно изменить параметр CheckUpdates=0. Если будет стоять 1, то утилита полезет проверять обновления, будет спрашивать всякое, и ничего не получится. - Утилита PsExec из комплекта SysinternalsSuite. Также можно взять на любимом файл-сервере. Или на сайте разработчика: https://technet.microsoft.com/ru-ru/library/bb545021.aspx Работает без установки, просто распаковать в любимый каталог.
Структура каталогов
- d:\Programs\cmd\inventory\
- inventory.cmd
- cpu-z\
- cpuz.ini
- cpuz_readme.txt
- cpuz_x32.exe
- cpuz_x64.exe
- sysinfo.cmd
SysinternalsSuite в этой структуре не обязательно, путь к утилите PsExec указывается в скрипте.
Параметры запуска
На локальной машине запускается файл inventory.cmd с параметром - IP-адрес целевого компьютера, т.е. того, с которого будем собирать информацию:
inventory.cmd 192.168.0.1
Без передаваемого параметра скрипт не запустится.
Скрипты
inventory.cmd
@ECHO OFF
REM Проверяем на отсутствие IP. Без этого параметра скрипт не работает
IF "%1" EQU "" (
ECHO Нужно ввести IP компьютера
GOTO END
)
REM Установка переменных
SETLOCAL
REM Буква, на которую будет назначен сетевой диск
SET NET_DRIVE=T:
REM Откуда брать CPU-Z для копирования на целевой компьютер
SET CPUZ="d:\Programs\cmd\inventory\cpu-z"
REM Где лежит PsExec
SET PSEXEC="d:\Programs\SysinternalsSuite\PsExec.exe"
REM Собственно, скрипт
REM Подключаем диск C: на целевом компьютере как сетевой диск
NET USE %NET_DRIVE% \\%1\c$ /user:Администратор password /persistent:no
REM Создаём на целевом компьютере каталог, в котором будет работать скрипт, собирающий сведения
IF NOT EXIST %NET_DRIVE%\INVENTORY\nul MD %NET_DRIVE%\INVENTORY
IF NOT EXIST %NET_DRIVE%\INVENTORY\cpu-z\nul MD %NET_DRIVE%\INVENTORY\cpu-z
REM Копируем на целевой компьютер каталог с утилитой CPU-Z и скриптом, собирающим сведения
XCOPY /E %CPUZ% %NET_DRIVE%\INVENTORY\cpu-z
REM С помощью утилиты PsExec запускаем на целевом компьютере скрипт, собирающий сведения
%PSEXEC% \\%1 -u Администратор -p password cmd /c c:\Inventory\cpu-z\sysinfo.cmd
REM Удаляем следы присутствия на целевом компьютере
%PSEXEC% \\%1 -u Администратор -p password cmd /c RD /S /Q C:\inventory
REM После завершения работы отключаем сетевой диск
NET USE %NET_DRIVE% /d /y
REM Подключаем как сетевой диск каталог на файловом сервере с результатом работы
NET USE I: \\192.168.0.10\temp\inventory /user:username userpassword /persistent:no
START explorer I:\
:END
- Скрипт должен быть в кодировке OEM866 (DOS), иначе не будут распознаны кириллические символы, например, "Администратор".
- Скрипт создаёт на целевом компьютере, на диске C:, необходимую структуру каталогов, копирует туда утилиту CPU-Z и скрипт sysinfo.cmd.
- Затем с помощью утилиты PsExec запускает на целевом компьютере скрипт sysinfo.cmd.
- Результаты работы скрипта sysinfo.cmd сохраняются на файл-сервер.
- После завершения скрипта sysinfo.cmd на целевом компьютере удаляется созданная структура каталогов.
- Подключается сетевым диском каталог на файл-сервере с результатами работы скрипта sysinfo.cmd и открывается Explorer с этим каталогом.
sysinfo.cmd
@ECHO OFF
REM Подключаем как сетевой диск каталог на файл-сервере для сохранения результатов работы
NET USE Z: \\192.168.0.10\temp\inventory /user:username userpassword /persistent:no
REM Запускаем CPU-Z в режиме без GUI, зато с сохранением результатов в файл
REM В качестве имени файла используется имя компьютера из системной переменной %COMPUTERNAME%
%~dp0\cpuz_x32.exe -txt=Z:\%COMPUTERNAME%
REM Недостающую информацию даст встроенная в Windows команда systeminfo
systeminfo >> Z:\%COMPUTERNAME%.txt
REM А эти команды помогут понять есть ли у пользователя права локального администратора
net localgroup Администраторы >> Z:\%COMPUTERNAME%.txt
net localgroup Пользователи >> Z:\%COMPUTERNAME%.txt
REM Отключаем сетевой диск
NET USE Z: /d /y
:END
- Скрипт должен быть в кодировке OEM866 (DOS), иначе не будут распознаны кириллические символы, например, "Администратор".
- Что именно делает скрипт подробно написано в комментариях в теле скрипта.
четверг, 30 марта 2017 г.
А вот не надо было умничать!
Вредно быть слишком умным :-(
Вернее, вредно быть шибко умным, но при этом невнимательным.
Это я опять про себя. Вчера убил почти целый день на разборки с брандмауэром Windows. Ни в какую он не хотел пропускать через себя сетевой сканер! Есть у нас в конторе один модный поточный сканер, а к нему модуль сканирования по сети. Можно сканирование запускать с компьютера, с помощью специальной программы, а можно нажатием кнопочки на этом модуле. Вот только как только я включаю брандмауэр, так сканирование по кнопке перестаёт работать! Из программы работает, а напрямую со сканера - нет.
Я уж и так, и эдак, Интернет весь перелопатил, и правила всякие создавал - ничего не помогает! Сегодня с утра со свежими силами пришёл снова разбираться с этой проблемой. И что вы думаете оказалось? Оказалось, что сеть этого компьютера почему-то числилась как "Общественная"! Всего-то нужно было переназначить сеть из общественной в рабочую, чтобы всё стало хорошо.
Отсюда вывод: надо быть внимательным. А не только умным. Не умничать, а присматриваться к мелочам и настройкам.
Такие дела.
Вернее, вредно быть шибко умным, но при этом невнимательным.
Это я опять про себя. Вчера убил почти целый день на разборки с брандмауэром Windows. Ни в какую он не хотел пропускать через себя сетевой сканер! Есть у нас в конторе один модный поточный сканер, а к нему модуль сканирования по сети. Можно сканирование запускать с компьютера, с помощью специальной программы, а можно нажатием кнопочки на этом модуле. Вот только как только я включаю брандмауэр, так сканирование по кнопке перестаёт работать! Из программы работает, а напрямую со сканера - нет.
Я уж и так, и эдак, Интернет весь перелопатил, и правила всякие создавал - ничего не помогает! Сегодня с утра со свежими силами пришёл снова разбираться с этой проблемой. И что вы думаете оказалось? Оказалось, что сеть этого компьютера почему-то числилась как "Общественная"! Всего-то нужно было переназначить сеть из общественной в рабочую, чтобы всё стало хорошо.
Отсюда вывод: надо быть внимательным. А не только умным. Не умничать, а присматриваться к мелочам и настройкам.
Такие дела.
Подписаться на:
Комментарии (Atom)