понедельник, 23 декабря 2013 г.

Так умирают жёсткие диски

Как в кино, когда кривая пульса на мониторе превращается в прямую линию, так и здесь - ровная линия "битых" секторов. Диск всё.


Посмотреть на Яндекс.Фотках

среда, 18 сентября 2013 г.

Самописный скрипт для ротации логов

Сегодня ради этих вот нескольких строчек ломал голову несколько часов:

@ECHO OFF

SETLOCAL
SET ren_list=D:\Temp\1\ren_list.txt

FOR /F %%f in ('TYPE %ren_list%') DO (
IF EXIST %%f.bak DEL %%f.bak
IF EXIST %%f REN %%f %%~nxf.bak
)

:END

Сначала это были две строчки, которые, что называется, решали задачу "в лоб":

REM Проверяем - если есть старая версия лог-файла, то удаляем её
IF EXIST D:\Temp\1\logfile.bak DEL D:\Temp\1\logfile.bak
REM Переименовываем лог-файл
REN D:\Temp\1\logfile.txt logfile.bak

Потом подумалось, что может оказаться больше одного лога, которые жрут место и которые надо бы периодически удалять. Не, можно, конечно, продолжать лепить строчки дальше, для каждого файла, но это же НЕКРАСИВО. Поэтому я начал чесать лысину в надежде, что это поможет придумать, как сделать красиво :-)

Пример кода для работы со списком у меня уже был, вот от него и начал плясать. Сначала было два списка: файлы, которые нужно переименовать и имена, которые должны получиться. Потом стало понятно, что второй список не нужен. Затем пришлось играться с именами файлов - полное имя/короткое имя, с расширением .bak и без него. Ну и всё такое. Поначалу получалась какая-то ересь, но постепенно из неё как-то получились эти строчки.

Как программисты пишут НОРМАЛЬНЫЕ программы, мне не понять. Они ведь по две строчки кода в день не пишут, верно?

вторник, 10 сентября 2013 г.

Я не программист

Я тут в последние дни периодически, когда есть время, вожусь со скриптиком, который будет мне делать архив базы данных и радостно уведомлять о выполненной работе по электронной почте. Вот как раз с этим почему-то и не получалось. Вообще у меня такой скрипт регулярно, по пятницам, рассылает смешные письма. То есть проверен неоднократно. Но это на моём компьютере. А вот на сервере почему-то пишет "ошибка синтаксиса". И вместо того, чтобы "развернуть" переменную %%f в адрес электронной почты, так и оставляет %f. Вот он, этот злосчастный кусок кода:


@echo off
setlocal
set blat=D:\Temp\blat307\full\blat.exe
set log=D:\path\to\Programs\blat307\files\log.txt
set list=D:\path\to\Programs\blat307\files\maillist.txt
set smtpsender=username@yandex.ru
set smtpserver=smtp.yandex.ru
set smtpport=25
set smtpuser=username@yandex.ru
set smtppwd=password
set subj=D:\path\to\Programs\blat307\files\subj.txt
set msg=D:\path\to\Programs\blat307\files\msg.txt
set logfile=D:\path\to\Programs\blat307\log\blat_log.txt
set codepage=Windows-1251

for /f %%f in ('type %list%') do (

%blat% -to %%f -f %smtpsender% -server %smtpserver% -port %smtpport% -u %smtpuser% -pw %smtppwd% -log %logfile% -charset %codepage% -sf %subj% -bodyF %msg% >> %log%
)

:END


Ошибка была в ДНК, как обычно :-)
Не надо было в конце дописывать >> %log%! И вот из-за этой, стандартной, в общем-то, процедуры перенаправления вывода, весь сыр-бор. Кто ж знал-то. Ну да, в оригинале её не было, зачем-то дописал, хотя там и так есть ключ, указывающий на запись в лог.

вторник, 23 апреля 2013 г.

Завести Вику

Я, наверное, всё же тормоз и слоупок, но про сервис Сайты Google узнал совсем недавно. Вернее, знал-то я про них давно, подтверждением тому служит "сайт", созданный там ещё в 2009 году (14 окт. 2009 г., 16:14). Потом забытый до 20 мая 2012 г., 7:29. И вот на прошлой неделе я снова о нём вспомнил. Случайно наткнулся на статью о том, как быстренько можно склепать для себя что-то вроде википедии, только без википедии :-)

А мне, говоря по правде, собственный сайт нужен как раз для того, чтобы иметь доступ к не очень большому набору статей, руководств к действию. Ну, например, как быстро переустановить винду из готового образа. Или посмотреть текст самописного скриптика, который удаляет из той же винды "мусор". В связи с тем, что сайты, созданные на Народе переехали на Ucoz, пришлось задумываться об альтернативе. Ну, не нравится мне этот Юкоз, какой-то он запутанный весь.

Сайты гугла тоже поначалу, в 2009 году, простыми не показались, или не надо мне тогда было, не помню уже. Но после прочтения статьи полез попробовать, сделал отдельный сайт "Вику", накидал туда собственных текстов, попутно разобрался немножко, как структуру создавать... Так ведь красотища же! Всё просто, понятно и даже где-то красиво. Теперь потихоньку сливаю туда статьи из здешней, локальной Вики, те, которые писал по мотивам собственных наработок. Кое что, конечно, приходится менять, логины/пароли, например, заменяю на "username" и "password", ибо нефиг. А в остальном - даже оформление страницы переносится полностью! В HTML лезть вообще не приходится. В общем, для меня - самое то.

среда, 17 апреля 2013 г.

Отправка e-mail из командной строки Windows


Вот насколько всё же проще людям в англоговорящих странах! Во-первых, раскладку клавиатуры им переключать не надо. Во-вторых - с кодировками символов заморочек никаких. А я вот каждый раз, когда сталкиваюсь с тем, что надо что-то в консоли сделать с русскими символами, проклинаю разработчиков Windows. Ну, честное слово, это же издевательство какое-то! Даже в рамках ОДНОЙ операционной системы используется ДВЕ кодировки символов. И каждый раз я заново бьюсь головой об эти разногласия между ними. Вот из последнего. Хочется мне, чтобы в пятницу вечером текст из определённого файлика рассылался группе товарищей. Группа, прямо скажем, небольшая, шесть человек или около того, но всё равно делать рассылку вручную надоедает. Для такого случая существуют консольные почтовые клиенты, для которых можно написать небольшой скрипт, и всё, раз в неделю (или как угодно) планировщик будет его запускать и делать за тебя всю работу. Собственно, мне так уведомления с серверов приходят - если что не так, скрипт присылает письмо. Но, зная о проблеме с кодировками, я все уведомления для себя написал транслитом. А для людей мне нужно отправлять нормальный русский текст, нормальными русскими буквами. Утилитка, которой я пользуюсь, с оригинальным названием Blat, вроде бы умеет работать с кодировками. Поэтому я написал вот такой скриптик:
@echo off
setlocal
set list=D:\path\to\Programs\blat307\files\maillist.txt
set smtpsender=username@yandex.ru 
set smtpserver=smtp.yandex.ru 
set smtpport=25 
set smtpuser=username@yandex.ru 
set smtppwd=password
set subj=D:\path\to\Programs\blat307\files\subj.txt
set msg=D:\path\to\Programs\blat307\files\msg.txt
set logfile=D:\path\to\Programs\blat307\log\blat_log.txt
set codepage=Windows-1251

for /f %%f in ('type %list%') do (

D:\Temp\blat307\full\blat.exe -to %%f -f %smtpsender% -server %smtpserver% -port %smtpport% -u %smtpuser% -pw %smtppwd% -log %logfile% -charset %codepage% -sf %subj% -bodyF %msg%
)

ECHO Sended > %msg%

:END
То есть чёрным по белому написано, что codepage у нас Windows-1251. Но почему-то письма приходит через раз крякозябрами. Что тому причиной - поди разберись. С виду-то всё правильно!

среда, 10 апреля 2013 г.

Удалённый рабочий стол. Из Linux

Remote Desktop «Remote Desktop» на Яндекс.Фотках Есть на моей нынешней работе ряд задач, для которых достаточно, чтобы компьютер умел подключаться к удалённому рабочему столу сервера, а дальше уже всё происходит там. Способов добиться этого несколько. Можно просто установить на компьютер Windows и настроить подключение к серверу. Но это как-то... Не нравится мне этот способ. Есть другие решения, разной степени сложности. Например, существует проект Thinstation, который позволяет создать флэшку, с которой и будет загружаться компьютер. На флэшку записывается специально подготовленный дистрибутив Linux, настроенный на выполнение одной задачи - подключиться к рабочему столу сервера. Вещь замечательная, но у меня не взлетела. Во-первых, настройка не совсем, чтобы простая, во-вторых, на новых компьютерах с интегрированной видеокартой я так и не сумел настроить драйвер этой самой видеокарты. В результате подключение по сети к серверу есть, а вот картинки с сервера нет. Но вообще это, наверное, самый правильный способ. Потом я начал рыть в сторону более универсальных, но всё же "лёгких" дистрибутивов, которые тоже грузятся с флэшки или компакт-диска и много памяти не занимают. Damn Small Linux (DSL) показался хорошим вариантом - размер дистрибутива всего 50 МБ, может полностью загружаться в оперативную память, rdesktop есть, что называется, "из коробки". Но и с ним не срослось, не находит он почему-то теперь уже сетевую карту на моём подопытном компьютере. А на днях я ходил на точку, где работает терминал, запущенный мной на базе Linux Mint 13. Вышло с ним всё почти случайно - у меня так же был старенький компьютер "для опытов", и я на нём как раз поставил Mint, сменил оболочку на более лёгкую (и более страшненькую), ну, и настроил Remote Desktop. И, как обычно, СРОЧНО понадобилось поставить комп на рабочее место, чтобы работать исключительно в терминальной сессии. Я этого подопытного и отдал, немножко изменив настройки под местные условия. И вот подумал - а если запустить Mint не с жёсткого диска, а с флэшки? С одной стороны, запускать полноценную OS только для того, чтобы зайти в терминальную сессию, вроде бы ни к чему. С другой - это же не винда, беспокоиться о лицензии не надо, устанавливать не надо, работает с флэшки. Так почему бы и нет? Поэтому я скачал себе Linux Mint 13 "Maya" - Xfce (32-bit), записал его на флэшку с помощью утилиты Universal USB Installer на флэшку - и вперёд. Поскольку используется полноценный и новый дистрибутив Linux, то проблем с определением устройств не возникло - работает и сеть, и видео. Единственный нюанс - чтобы сохранялись все настройки, нужно при создании загрузочной флэшки в Universal USB Installer выделить место под постоянное хранилище (Set a Persistent file size for storing changes). Я выделил 1 ГБ, этого хватит на всю оставшуюся жизнь, поскольку кроме небольших файлов конфигурации там ничего храниться не будет. Сейчас надо по горячим следам, пока не забыл, что и как делал, написать статью в локальную Wiki. Мало ли, придётся через полгода всё заново вспоминать - так просто пройду пошаговую инструкцию с картинками.

среда, 16 января 2013 г.

Трудовыебудни


Посмотреть на Яндекс.Фотках Сегодня приехал ко мне в починку компьютер, который, как я считал, загружался с флэшки с помощью ThinStation. Как выяснилось, ThinStation там было, а вот флэшки не было, был древний жёсткий диск, который благополучно и умер. Впрочем, флэшка или жёсткий диск, без разницы, реанимации ни то, ни другое не поддаётся. Поэтому пришлось думать, как по возможности быстро поставить "пациента" обратно в строй. Предложение поставить Windows показалось мне не самым подходящим. Зачем это всё богачество ради одной простой операции - при загрузке сразу же подключиться к серверу терминалов? Больше ничего на этом компьютере не предполагается, только терминальная сессия. Собственно, потому и установлена была ThinStation. Но эту штуку я как-то с наскоку победить не сумел, поэтому "по быстрому" тоже бы не получилось. Но на столе лежал жёсткий диск с наклейкой "Linux терминал, рабочий". Это я когда-то, в период разбирательств с терминалами, поставил на него какой-то дистрибутив Linux и настроил тестовое подключение к нашему серверу. И оно работало. Поэтому воткнул этот жестяк в "пациента", включил... И чудо свершилось! Правда, чудо пришлось допиливать напильником, попутно вспоминая, как и что делать, потому что уже подзабылось всё - и где в IceWM автозапуск программ, и как настроить сеть, чтобы настройки не слетали, и как сделать окно терминала на весь экран. Но, слава гуглу с яндексом, все эти вопросы удалось решить. И завтра, надеюсь, машинка поедет обратно на своё рабочее место. Нужно только будет на месте подправить пару файликов, адаптировать к условиям проживания, так сказать. И ещё не забыть (и не забить!) задокументировать все настройки, чтобы не было потом мучительно больно напрягать мозг в попытках вспомнить всё.