tag:blogger.com,1999:blog-41499600469497571702024-03-13T16:18:55.519+03:00ITAnonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-4149960046949757170.post-16594295964591039372017-09-22T22:31:00.000+03:002017-09-22T22:31:10.228+03:00RTSP у noname WI-FI камеры Dual-HD CAM360<div class="separator" style="clear: both; text-align: left;">
Некоторое время назад "для поиграться" на просторах aliexpress была приобретена вот такая Wi-Fi камера с удалённым управлением:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://ae01.alicdn.com/kf/HTB1Dnp7KVXXXXckXVXXq6xXFXXXy/220012463/HTB1Dnp7KVXXXXckXVXXq6xXFXXXy.jpg?size=111816&height=1000&width=1000&hash=7b76e9ae4a8c3d6b79857b9b17fe413f" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://ae01.alicdn.com/kf/HTB1Dnp7KVXXXXckXVXXq6xXFXXXy/220012463/HTB1Dnp7KVXXXXckXVXXq6xXFXXXy.jpg?size=111816&height=1000&width=1000&hash=7b76e9ae4a8c3d6b79857b9b17fe413f" width="400" /></a></div>
Играться, сидя возле неё и тыкая в телефон пальцем было не интересно. В настройках было обнаружено, что она умеет RTSP (Real Time Streaming Protocol), но как им воспользоваться инструкция ничего не говорила, поэтому пришлось перебирать интернет по части адреса подключения. Что начало было rtsp://{address}:10544/ было известно, но что писать после порта было неясно. В итоге одно из решений помогло. Победителем стал <b>rtsp://{address}:10544/tcp/av0_0</b>. Именно это и надо писать в проигрывателе <b>VNC</b> в окне <b>Медиа -> Открыть URL...</b> на закладке <b>Сеть</b><br />
<b><br /></b>
Также поток можно посмотреть и из браузера, перейдя по адресу <b>http://{address}:81/videostream.cgi?user={user}&pwd={pass}</b> (по умолчанию логин admin без пароля)<br />
или получить скриншот<br />
<b>http://{address}:81/snapshot.cgi?user={user}&pwd={pass}</b><br />
<b>---</b><br />
<b>UPDATE 20170922</b><br />
Прошло уже много времени с тех пор, как я решил поиграться этой камерой. Лежала она себе спокойно на полочке, пока мне вдруг не захотелось её ещё раз помучить. Оказалось почти всё, что я написал ранее не работает. Вообще не понятно с какого перепугу...<br />
В общем, адресом подключения теперь стала строка:<br />
<b>http://{address}:11494/</b><br />
Получение потока теперь такое:<br />
<b>http://{address}:11494/videostream.cgi?loginuse={user}&loginpas={pass}</b><br />
А скриншот соответственно<br />
<b>http://{address}:11494/snapshot.cgi?user={user}&pwd={pass}</b><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-7137551373377891432017-02-27T22:06:00.000+03:002017-02-27T22:06:32.822+03:00Восстановление загрузки UEFI UbuntuНа моём рабочем ноутбуке настроена двойная загрузка - Ubuntu и Windows 10 (даже не спрашивайте ЗАЧЕМ?!). Очередное обновление последней снова снесло загрузчик GRUB2 (когда же наконец-то появится что-нибудь более нормальное *риторический вопрос*). В последний раз пытался воспользоваться утилитой <b>efibootmgr</b> с помощью которой успешно удалось угробить всё до конца, т.к. она успешно справлялась с удалением (а изменять она вообще не может, от слова СОВСЕМ), а вот при добавлении сыпала ошибками о невозможности что-то куда-то записать (уже не помню что и куда).<br />
<br />
Пытался даже воспользоваться набором скриптов с GUI <a href="http://help.ubuntu.ru/wiki/boot_repair" target="_blank">boot-repair</a> и так же безрезультатно.<br />
<br />
В этот раз я воспользовался самой простой консольной утилитой <b>Windows</b> под названием <b>bcdedit</b>.<br />
<br />
На разделе с загрузчиками у меня расположились следующие:<br />
<blockquote class="tr_bq">
/EFI/Boot/bkpbootx64.efi /EFI/Boot/bootx64.efi<br />/EFI/ubuntu/MokManager.efi /EFI/ubuntu/fwupx64.efi<br />/EFI/ubuntu/grubx64.efi /EFI/ubuntu/shimx64.efi<br />/EFI/Microsoft/Boot/bootmgfw.efi<br />/EFI/Microsoft/Boot/bootmgr.efi<br />/EFI/Microsoft/Boot/memtest.efi</blockquote>
Последние 3 вряд ли нас спасут, поэтому воспользуемся утилитой и укажем какой же загрузчик использовать.<br />
<pre class="brush:bash">bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi</pre>
<br />
Перезагружаемся и наслаждаемся восстановленным загрузчиком grub2, будь он не ладен. И никаких танцев с бубном =)<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-17334330567062291572017-02-15T22:55:00.001+03:002017-02-27T21:45:20.772+03:00Прокси-сервер на Ubuntu 16.04 и Squid 3.5.12Как ни пытался избежать этого момента, но он настал. Установленный прокси на Ubuntu 14.04 с squid 3.3.8 уже достал меня угрозами, что на мою версию перестанут(ли) выпускаться обновления и предлагает мне сделать апгрейд. Делать это на боевом сервере как-то рука не подымается, ведь так не хочется нарушать целостность всем известного органа подсознания =) Но тут подвернулся старенький сервер в виде HP Proliant DL160 G5, с которого установленная ОС вместе с приложениями были переведены в вид виртуальной машины с помощью несложных манипуляций. Его-то мы и будем превращать в новый прокси-сервер. Зачем это надо, ведь всё и так прекрасно работает? - спросите вы. Просто хотелось бы перевести на более современную платформу, прокси и всё-таки переделать ext_ldap_group на ext_kerberos_ldap_group, т.к. в случае падения одного из прописанных в конфигурации КД у пользователей перестаёт работать интернет. Возможно эта проблема связана и не с этим, поэтому за одно и проверю эту гипотезу.<br />
<div>
<br /></div>
<div>
<span style="font-size: large;"><b>На цикл постараюсь не разбивать, а уложиться в размер одной статьи. Наполнять буду постепенно по ходу установки, настройки и устранения проблем в случае их появления.</b></span></div>
<h2>
С чего начать?</h2>
<div>
Предполагается наличие загруженного установочного образа ОС Ubuntu 16.04, которая на момент написания имеет уже 2 релиз. Загрузить его можно на сайте разработчика по ссылке <a href="https://www.ubuntu.com/download/server" target="_blank">https://www.ubuntu.com/download/server</a><br />
<h2>
Исходные данные</h2>
OS: Ubuntu 16.04.2<br />
FQDN: proxy.ad.local<br />
NIC: 192.168.0.4 (да, прокси с одним интерфейсом, такова топология сети и требования СБ)<br />
DC: AD.LOCAL<br />
AD: dc1.ad.local - 192.168.0.2<br />
AD: dc2.ad.local - 192.168.0.3<br />
GW: 192.168.0.1<br />
<br />
Кэширование использовать не предполагается, но это легко исправить в случае необходимости.</div>
<h2>
Установка ОС</h2>
<div>
Как ни прискорбно, но процесс установки описывать не буду. Возможно в дальнейшем я изменю своё решение, но пока это так, ведь процесс установки Ubuntu не сильно отличается от установки обычной программы (Далее - Далее - Далее - Готово). Исключение составляет лишь разметка диска, но этот процесс также индивидуален и зависит от того, что вы хотите получить в итоге.</div>
<h2>
Первая стадия</h2>
<div>
В связи с тем, что первоначальная установка происходит в серверной (ну нет у меня на нём iLO), поэтому хочется быстрее свинтить с этого шумного и холодного места. Для этого первым делом настроим интерфейс и поставим openssh-server. Так сделаем это:<br />
<pre class="brush:bash">sudo vi /etc/network/interfaces</pre>
<pre class="brush:bash"># This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# LAN network interface
auto eth0
iface eth0 inet static
address 192.168.0.4
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.2 10.160.0.3
dns-search ad.local</pre>
После чего перезагрузим сервер:<br />
<pre class="brush:bash">sudo reboot</pre>
и продолжим:</div>
<pre class="brush:bash">sudo apt install openssh-server</pre>
<div>
Отредактируем его конфигурационный файл:<br />
<pre class="brush:bash">sudo vi /etc/ssh/sshd_config</pre>
<div>
в котором раскомментируем строку и приведём её к виду:<br />
<pre class="brush:bash">ListenAddress 192.168.0.4</pre>
и перезапустим службу:<br />
<pre class="brush:bash">systemctl restart sshd.service</pre>
Теперь быстренько сбегаем из этого холодильника, пока не простыли, и садимся в своё тёплое и удобное кресло Администратора. Надеюсь кофе с плюшками запаслись? Нет? Тогда дальше ни в коем случаем не читать!!!<br />
<h2>
Вторая стадия</h2>
В тёплое место перебрались? Кофе запаслись? Тогда продолжим =)<br />
Берём в руки консоль DNS и добавляем туда записи A и PTR согласно исходным данным, т.е. proxy.ad.local - 192.168.0.4<br />
<br />
Теперь уже можно установить то, ради чего мы все здесь собрались, Squid'а:<br />
<pre class="brush:bash">sudo apt-get install squid3 ldap-utils krb5-user</pre>
Последний пакет нам пригодится, когда перейдём к настройке Kerberos.<br />
<br />
Наш прокси-сервер мы будем использоваться в сети с Active Directory, которая очень не любит большого разброса времени. Чтобы не нарваться на неприятности, поднимем демона синхронизации:<br />
<pre class="brush:bash">sudo apt install ntp</pre>
и отредактируем его конфигурационный файл, закомментировав серверы времени Ubuntu и указав свои:<br />
<pre class="brush:bash">sudo vi /etc/ntp.conf</pre>
<pre class="brush:bash">server dc1.ad.local
server dc2.ad.local
. . .
interface listen 192.168.0.4</pre>
По завершении перезапускаем службу и убеждаемся в работоспособности:<br />
<pre class="brush:bash">systemctl reload ntp.service
sudo ntpq -p</pre>
<h2>
Третья стадия</h2>
20170227 Проблема с реализацией аутентификации Kerberos. Как только разберусь в причинах продолжу повествование.<br />
<br />
... to be continued =)<br />
<br />
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com1tag:blogger.com,1999:blog-4149960046949757170.post-82009831307836965712016-12-15T19:48:00.002+03:002016-12-28T16:28:04.305+03:00Переходим с Screen Squid 1.7 на 1.10Продолжу начатую ещё с версии 1.5 инструкцию по установке и первоначальной настройке Screen Squid. Теперь рассказ будет про 1.10. Возможно в процессе что-нибудь упущу, т.к. каждый раз инструкцию пишу по памяти, а не в процессе установки. Также, в отличие от предыдущих инструкций, упомяну здесь случай переноса некоторых данных с таблиц версии 1.7, т.к. по новой создавать алиасы, группы и их соединения вряд ли захочется.<br />
<br />
Все дальнейшие пункты установки подразумевают, что у вас уже установлены http- и mysql-сервер, как и php с модулями mysql и iconv в случае необходимости. Замечу, что версия PHP 7 не будет работать с текущей версией Screen Squid, т.к. изменился драйвер mysql на mysqli. Возможно эту проблему можно допилить настройками, но я пока этим вопросом не заморачивался.<br />
<br />
И так, приступим к установке 1.10.<br />
<br />
Перед реализацией всей этой машинерии необходимо <a href="http://break-people.ru/cmsmade/?page=scriptology_screen_squid_files" target="_blank">скачать ScreenSquid</a> с сайта разработчика.<br />
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка в файле /etc/mysql/conf.d/mysql.cnf (для версии 5.7 в Ubuntu 16.04, в других дистрибутивах это может быть /etc/my.cnf, /etc/mysql/my.cnf и т.п.):<br />
<pre class="brush:bash">[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
</pre>
Произведённые выше действия с конфигурационным файлом восстановили корректную работу с кириллическими символами. Не знаю как будет у Вас, но без этого кириллица упорно сохранялась и отображалась в win1252 (latin1).<br />
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:<br />
<pre class="brush:bash">sudo tar xzf screensquid_v1_10.tar.gz -С /var/www/</pre>
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:<br />
<pre class="brush:bash">sudo mv /var/www/html /var/www/screensquid/</pre>
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).<br />
Подключимся:<br />
<pre class="brush:bash">mysql -u[user_name] -p[password]</pre>
Создадим новую базу данных (если ранее была установлена 1.7 название должно отличаться):<br />
<pre class="brush:sql">CREATE DATABASE screensquid DEFAULT CHARACTER SET=utf8;</pre>
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:<br />
<pre class="brush:sql">use screensquid;
SOURCE /var/www/screensquid/createdb/createdb.sql;</pre>
Чтобы не подключаться пользователем root и не светить его права создадим нового пользователя mysql и наделим его полными правами к созданной БД. Данный пункт можно частично не выполнять, в случае ранее установленной версии 1.7, оставив лишь GRANT... с указанием новой базы:<br />
<pre class="brush:sql">CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON screensquid.* TO 'user_name'@'localhost'; </pre>
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо <i><b>user_name</b></i> и <i><b>password</b></i> указываем те значения, которые мы ввели выше:<br />
<pre class="brush:bash">sudo vi /var/www/screensquid/config.php</pre>
<pre class="brush:perl">$db = "screensquid";
$user = "user_name";
$pass ="password";
$address ="localhost";
$cfgsquidhost[0]="localhost";
$cfgsquidport[0] = 3128;
$cfgcachemgr_passwd[0]="{пароль из директивы cachemgr_passwd squid.conf}";</pre>
и в скрипте заполнения таблиц БД:<br />
<pre class="brush:bash">sudo vi /var/www/screensquid/fetch.pl</pre>
<pre class="brush:perl">my $user = "user_name";
my $pass = "password";
my $db = "screensquid";</pre>
В последнем файле, который выполняет роль парсера файла лога, были внесены очень необходимые изменения, а это:<br />
<ol>
<li>Можно указывать короткий или полный путь к файлу лога SQUID</li>
<li>Появился лог результатов выполнения скрипта, путь к которому также можно указать в коротком или полном формате. </li>
<li>Добавилось логирование в БД о процессе работы парсера.</li>
</ol>
Поэтому не побрезгуем и воспользуемся этими возможностями, отредактировав соответствующие переменные:<br />
<pre class="brush:perl">my $filetoparse="/var/log/squid3/access.log.1";
my $filetolog="/var/www/screensquid/ssquid.log";
</pre>
Конечно же можно было оставить эти значения по умолчанию, разместив сам скрипт в папке с логами, но этот метод меня не устроил. Также заметьте, что парсер будет работать с файлом .1, который появляется после работы программы <b>logrotate</b>, таким образом получая в базе данные за предыдущий день. Никто не заставляет поступать аналогичным образом, всё в Ваших руках.<br />
<br />
По завершении конфигурирования парсера сделаем его исполняемым, воспользовавшись командой:<br />
<pre class="brush:bash">sudo chmod u+x fetch.pl</pre>
После чего настроим <b>cron</b> для запуска этого скрипта:<br />
<pre class="brush:bash">sudo crontab -e</pre>
куда добавим следующую запись:<br />
<pre class="brush:bash"># запуск каждый день в 23 часа
00 23 * * * /var/www/screensquid/fetch.pl</pre>
С конфигурированиями закончили, поэтому можно немного расслабиться и поиграться другими очень интересными и нужными командами.<br />
<br />
В предыдущих версиях были добавлены графики и диаграммы в Dashboard и отчёте "По времени суток". Так как архив с анализатором мы распаковывали с правами root, именно он и стал владельцем всех каталогов и файлов. Менять владельца на всё не буду, поэтому ограничусь лишь каталогом, где создаются эти самые картинки:<br />
<pre class="brush:bash">sudo chown -R www-data:www-data /var/www/screensquid/lib/pChart/pictures/</pre>
<br />
Также в 1.10 появился экспорт некоторых отчётов в PDF, которые создаются в каталоге <b><i>output</i></b>. Ему также необходимо изменить владельца, как и пунктом выше.<br />
<br />
Кто решится перейти с 1.7 на 1.10 и перенести алиасы, группы и другую информацию, можете выполнить указанные ниже команды после входа в консоль mysql с помощью :<br />
<pre class="brush:bash">mysql -u[user_name] -p[password]</pre>
<pre class="brush:sql">INSERT INTO screensquid.scsq_alias SELECT * FROM {db1.7}.scsq_alias;
INSERT INTO screensquid.scsq_aliasingroups SELECT * FROM {db1.7}.scsq_aliasingroups;
INSERT INTO screensquid.scsq_groups SELECT * FROM {db1.7}.scsq_groups;
INSERT INTO screensquid.scsq_logins SELECT * FROM {db1.7}.scsq_logins;
INSERT INTO screensquid.scsq_ipaddress SELECT * FROM {db1.7}.scsq_ipaddress;
INSERT INTO screensquid.scsq_httpstatus SELECT * FROM {db1.7}.scsq_httpstatus; // можно не переносить
</pre>
<br />
Не забудьте заменить текст в фигурных скобках на название своей базы данных версии 1.7.<br />
<br />
Да, чуть на забыл, что появилась разбивка сайтов по группам. Работает пока не очень, но не могу не отметить процесс заполнения таблиц. Качаем вот это: <a href="http://www.shallalist.de/Downloads/shallalist.tar.gz">http://www.shallalist.de/Downloads/shallalist.tar.gz</a> и распаковываем в любую директорию. Далее качаем <a href="http://tforum.break-people.ru/index.php?action=dlattach;topic=232.0;attach=89" target="_blank">парсер с форума break-people.ru</a> и кладём в тот же каталог. Вносим в него изменения в соответствии с потребностями:<br />
<pre class="brush:perl">my $host = "localhost"; # host s DB
my $port = "3306"; # port DB
my $user = "user_name"; # username k DB
my $pass = "password"; # pasword k DB
my $db = "screensquid"; # name DB
</pre>
И запускам на выполнение: perl ./getcat.pl<br />
<br />
Через несколько чашек кофе и/или сигарет скрипт закончит свою работу и заполнит необходимые таблицы в Screen Squid.<br />
<hr size="4" />
<div style="text-align: center;">
<b>ВОЗМОЖНЫЕ ОШИБКИ</b></div>
<hr size="4" />
Если в процессе выполнения скрипта парсера появляются ошибка вида:
<br />
<pre class="brush:perl">DBD::mysql::st execute failed: MySQL server has gone away at fetch.pl line XXX, <IN> line YYY.</pre>
попробуйте в fetch.pl уменьшить значение в строке:<br />
<pre class="brush:php">$count_lines_for_one_insert=10000;</pre>
<hr size="4" />
На сих откланиваюсь. Спасибо за внимание =) Успехов!<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com2tag:blogger.com,1999:blog-4149960046949757170.post-58300866782151370382016-08-03T21:38:00.000+03:002016-08-03T21:39:30.013+03:00Ошибка монтирования раздела NTFS в UbuntuОдно из самых коротких сообщений в блоге, т.к. не планирую часто использовать то, что здесь написано. В одной из предыдущих записей я писал, что была установлена Windows 10, которая используется лишь для работы с Visual Studio 2015. Остальное же время провожу в уже практически родной, но такой неизвестной Ubuntu. Но на днях столкнулся с такой проблемой - после корректного завершения работы Windows не смог примонтировать раздел диска в Linux'е. Встроенная в Windows программа проверки дисков что-то нашла и устранила, но примонтировать раздел так и не удалось, не смотря на то, что раздел не является системным и используется лишь для хранения данных.<br />
<br />
Ошибка, которую я получал при попытке монтирования раздела звучала приблизительно так:<br />
<blockquote class="tr_bq">
Error mounting /dev/sda4 at /media/AAA/SYS: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000" "/dev/sda4" "/media/AAA/SYS"' exited with non-zero exit status 14: Windows is hibernated, refused to mount.<br />
Failed to mount '/dev/sda4': Операция не позволена<br />
The NTFS partition is in an unsafe state. Please resume and shutdown<br />
Windows fully (no hibernation or fast restarting), or mount the volume<br />
read-only with the 'ro' mount option.</blockquote>
Устраняется данная проблема простым движением в несколько нажатий на клавиатуре:<br />
<pre class="brush:bash">sudo ntfsfix /dev/sdXY
</pre>
, где X - диск, а Y - номер его раздела.<br />
<br />
Также ещё были выполнены настройки в управлении электропитанием в самой Windows - в настройке "Действия при нажатии кнопки выключения" в настройках выключения снял индикатор "Быстрая загрузка при включении". (сейчас пишу из Ubuntu, поэтому в названиях элементов управления могу ошибаться).<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com18tag:blogger.com,1999:blog-4149960046949757170.post-42851092821861703422016-05-20T19:12:00.000+03:002016-05-20T19:12:44.642+03:00Процесс appstreamcli грузит 100% CPU в UBUNTUМожет кому ещё пригодится, но запись скорее для себя.<br />
На дня обнаружил, что в последнее время ноутбук как-то медленно стал работать. В выводе <b>top</b> увидел процесс, который чем-то занял ядро процессора.<br />
На <i>launchpad</i> нашёл этот пакет, в котором был <a href="https://bugs.launchpad.net/ubuntu/+source/appstream/+bug/1579712" target="_blank">зарегистрирован тикет</a>, уже решённые к текущей дате. Для устранения проблемы предлагается следующее:<br />
<pre class="brush:bash">
cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i libappstream3*.deb
sudo dpkg -i appstream*.deb
</pre><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-44189131501780171822015-12-03T21:49:00.002+03:002016-12-15T18:54:34.619+03:00Встречаем новый ScreenSquid 1.7 - анализатор логов SQUIDДабы не ссылаться на ранее написанную статью по установке версии 1.5, полностью её сюда скопирую, отредактировав под 1.7.<br />
<br />
Перед реализацией всей этой машинерии необходимо <a href="http://break-people.ru/cmsmade/?page=scriptology_screen_squid_files" target="_blank">скачать ScreenSquid</a> с сайта разработчика.<br />
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка в файле /etc/mysql/conf.d/mysql.cnf (для версии 5.7 в Ubuntu 16.04, в других дистрибутивах это может быть /etc/my.cnf, /etc/mysql/my.cnf и т.п.):<br />
<pre class="brush:bash">[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
</pre>
Произведённые выше действия с конфигурационным файлов привели к корректной работе с кириллическими символами. Не знаю как будет у Вас, но у меня кириллица упорно сохранялась и отображалась в win1252 (latin1).<br />
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:<br />
<pre class="brush:bash">sudo tar xzf screensquid_v1_7.tar.gz -С /var/www/</pre>
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:<br />
<pre class="brush:bash">sudo mv /var/www/html /var/www/screensquid/</pre>
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).<br />
Подключимся:<br />
<pre class="brush:bash">mysql -u[user_name] -p[password]</pre>
Создадим новую базу данных:<br />
<pre class="brush:sql">CREATE DATABASE squidreport DEFAULT CHARACTER SET=utf8;</pre>
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:<br />
<pre class="brush:sql">SOURCE /var/www/squidreport/createdb/createdb.sql</pre>
и обновим её же до последней версии:<br />
<pre class="brush:sql">SOURCE /var/www/squidreport/createdb/upgrade.sql</pre>
Чтобы не подключаться пользователем root и не светить его права создадим нового пользователя mysql и наделим его полными правами к созданной БД:<br />
<pre class="brush:sql">CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON squidreport.* TO 'user_name'@'localhost'; </pre>
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо <i><b>user_name</b></i> и <i><b>password</b></i> указываем те значения, которые мы ввели выше:<br />
<pre class="brush:bash">sudo vi /var/www/squidreport/config.php</pre>
<pre class="brush:perl">$db = "squidreport";
$user = "user_name";
$pass ="password";
$address ="localhost";</pre>
и в скрипте заполнения таблиц БД:<br />
<pre class="brush:bash">sudo vi /var/www/squidreport/fetch.pl</pre>
<pre class="brush:perl">my $user = "user_name";
my $pass = "password";
my $db = "squidreport";</pre>
В последнем файле, который выполняет роль парсера файла лога, были внесены очень необходимые изменения, а это:<br />
<ol>
<li>Можно указывать короткий или полный путь к файлу лога SQUID</li>
<li>Появился лог результатов выполнения скрипта, путь к которому также можно указать в коротком или полном формате. </li>
</ol>
Поэтому не побрезгуем и воспользуемся этими возможностями, отредактировав соответствующие переменные:<br />
<pre class="brush:perl">my $filetoparse="/var/log/squid3/access.log.1";
my $filetolog="/var/www/screensquid/ssquid.log";
</pre>
Конечно же можно было оставить эти значения по умолчанию, разместив сам скрипт в папке с логами, но этот метод меня не устроил. Также заметьте, что парсер будет работать с файлом .1, который появляется после работы программы <b>logrotate</b>, таким образом получая в базе данные за предыдущий день. Никто не заставляет поступать аналогичным образом, всё в Ваших руках.<br />
<br />
По завершении конфигурирования парсера сделаем его исполняемым, воспользовавшись командой:<br />
<pre class="brush:bash">sudo chmod u+x fetch.pl</pre>
После чего настроим <b>cron</b> для запуска этого скрипта:<br />
<pre class="brush:bash">sudo crontab -e</pre>
куда добавим следующую запись:<br />
<pre class="brush:bash"># запуск каждый день в 23 часа
00 23 * * * /var/www/squidreport/fetch.pl</pre>
С конфигурированиями закончили, поэтому можно немного расслабиться и поиграться другими очень интересными и нужными командами.<br />
<br />
В общем отчёте "По времени суток" был добавлен график. Пока это так, игрушка можно сказать, но надеюсь получит своё развитие в других отчётах. Но игрушка представляет собой файл изображения, который автоматически создаётся каждый раз при формировании отчёта. Так как архив с анализатором мы распаковывали с правами root, именно он и стал владельцем всех каталогов и файлов. Менять владельца на всё не буду, поэтому ограничусь лишь каталогом, где создаются эти самые картинки:<br />
<pre class="brush:bash">sudo chown -R www-data:www-data /var/www/screensquid/lib/pChart/pictures/</pre>
А теперь можем откинуться на спинку кресла и наслаждаться своей работой.<br />
<br />
При обновлении с 1.5 на 1.7, необходимо воспользоваться сценарием обновления таблиц базы данных, применив команду:<br />
<pre class="brush:bash">mysql [database_name] < /var/www/squidreport/createdb/upgrade.sql </pre>
<br />
В остальном обновление 1.5 до 1.7 не отличается от полной установки за исключением отсутствия необходимости создания новой БД, пользователя и настройки <b>cron</b>, если, конечно же, не вздумаете сменить расположение скрипта парсера.<br />
<br />
На сих откланиваюсь. Спасибо за внимание =) Успехов!<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-46049181983943820372015-12-02T21:41:00.000+03:002015-12-02T21:41:11.589+03:00Результат обновления Windows 10 до build 10586 при установленной Linux на втором разделеОчень редко использую Windows, которая была предустановлена на моём ноутбуке, но периодически провожу её обновление и поддерживаю её в рабочем состоянии в целях "а вдруг". Относительно недавно был произведён бесплатный апгрейд 8.1 до 10, который продолжался почти целый день, когда версии Ubuntu повышаются за пару-тройку часов. Но сегодня речь пойдёт не об этом.<br />
<br />
Жёсткий диск ноутбука, находящегося у меня в распоряжении уже не первый год, с тех пор, когда о GPT ещё никто слыхом не слыхивал и видом не видывал, был разбит аж на 4 основных раздела (максимум, что поддерживает MBR без учёта расширенных): Windows (NTFS), Linux (ext4 /), Linux (swap) и Windows (NTFS 8ГБ который не помню как появился). Всё прекрасно работало до недавнего времени, когда я решил обновить сборку Windows до последней.<br />
<br />
История началась в конце дня, когда я решил запустить Windows дабы выполнить предначертанное. Проверив обновления поставил их на загрузку и отправился в царствие Морфея, надеясь, что всеми "любимая" Windows сможет совершить эту процедуру без меня. Проверив на утро её результаты деятельности увидел, что всё было выполнено и она желает выполнить перезагрузку. Но логично, что. Так как повышался номер сборки я был морально готов к тому, что снова слетит MBR и GRUB снова перейдёт в режим восстановления. Как же я мог так хорошо подумать о Windows?<br />
<br />
Первая перезагрузка ничего не предвещала, производилось копирование файлов, после чего последовала перезагрузка, которая обернулась трагедией. Какой? - спрОсите вы меня. Ужасной! Установщик Windows решил, что он царь и бог в части управления разделами и... сделал пятый раздел для какого-то бэкапа, объединив оба раздела Linux в расширенный, чтобы влезть в рамки ограничений MBR. Естественно нумерация разделов полетела, GRUB в шоке, раздел ext4 Linux слетел и стал неразмеченным. НУ КАК ТАК-ТО?!<br />
<br />
Благо под рукой был диск с программами для восстановления, которые умеют и удалённые разделы восстанавливать. Среди них оказалась утилита от Acronis, называние которой не помню. Раздел-то она восстановила, но теперь получилось так, что раздел ext4 Linux стал основным в расширенном О.о. Я вообще хз как такое получилось, но оно и сейчас работает. Всякие GParted, Acronis и Paragon в шоке от такой разметки и все в один голос твердят, что разделы пересекаются.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-qARuiuCrSOE/Vl864p3ZVvI/AAAAAAAAA_g/8IbP4DKAngg/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2B%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%2B%25D0%25BE%25D1%2582%2B2015-12-02%2B21-38-55.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="http://3.bp.blogspot.com/-qARuiuCrSOE/Vl864p3ZVvI/AAAAAAAAA_g/8IbP4DKAngg/s640/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2B%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%2B%25D0%25BE%25D1%2582%2B2015-12-02%2B21-38-55.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Вот такая теперь весёлая разметка отображается в GParted'е</td></tr>
</tbody></table>
<br />
Но GRUB мне удалось восстановить, т.к. появился раздел и в таком виде это работает и в момент написания статьи. GRUB положил болт на эти безобразия и ему, судя по всему, совершенно пофиг как оно работает и грузит обе системы. В дальнейшем буду думать как это восстановить к первоначальному виду, за одно переделав в разметку GPT.<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-28218417959171139302015-10-01T11:28:00.000+03:002015-10-03T15:48:09.366+03:00Установка и обновление пакетов Python c помощью PIP через proxy в WINDOWSВ свободное время пописываю для себя небольшие программки на Python. Пользуюсь разными пакетами, которые помогают в решении поставленных задач. Но каждый раз забываю как их ставить и обновлять при рабоче через proxy-сервер. В общем, небольшая напоминалка для себя, а может и инструкция для других.<br />
<br />
Вообще, достаточно в командной строке ввести следующую строку, которая устанавливает переменную окружения, используемую pip'ом (в квадратных скобках необязательные значения):<br />
<pre class="brush:bash">set http_proxy=http://[user:password@]proxy:port
set https_proxy=http://[user:password@]proxy:port
</pre>
Но можно это сделать и с помощью системных настроек переменных сред. Дальнейшее справедливо для Windows XP - 7. Может и следующие версии поддерживают эти действия, я не проверял, т.к. ими не пользуюсь.<br />
<br />
Описывать подробно не буду, ибо будет понятно и по скриншотам.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-ErAOtOX4OPY/VgzsUF8q5CI/AAAAAAAAA-k/9VTWY_4tAPw/s1600/Context%2Bmenu.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="" border="0" src="http://2.bp.blogspot.com/-ErAOtOX4OPY/VgzsUF8q5CI/AAAAAAAAA-k/9VTWY_4tAPw/s1600/Context%2Bmenu.png" title="Контекстное меню "Компьютера"" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Вызовите контекстное меню "Компьютера" в меню ПУСК или на рабочем столе. Выберите "Свойства"</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-8NZWknoctdQ/VgzsUCl8cDI/AAAAAAAAA-8/W3OYxZ-DneA/s1600/Addition%2Bparameters.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://2.bp.blogspot.com/-8NZWknoctdQ/VgzsUCl8cDI/AAAAAAAAA-8/W3OYxZ-DneA/s1600/Addition%2Bparameters.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Выберите "Дополнительные параметры системы" в появившемся окне. Для XP сразу переходите к следующему пункту, минуя этот.</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-J3_LMgBL2X4/VgzsUJP0WEI/AAAAAAAAA-o/ykE7q2PQbuA/s1600/System%2Bsettings.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="http://1.bp.blogspot.com/-J3_LMgBL2X4/VgzsUJP0WEI/AAAAAAAAA-o/ykE7q2PQbuA/s400/System%2Bsettings.png" width="331" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">На закладке "Дополнительно" нажмите кнопку "Переменные среды...".</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-eg7-6vdFDrk/VgzsUv7KouI/AAAAAAAAA-s/2RgaoPbj5kI/s1600/set%2Bproxy.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="204" src="http://2.bp.blogspot.com/-eg7-6vdFDrk/VgzsUv7KouI/AAAAAAAAA-s/2RgaoPbj5kI/s320/set%2Bproxy.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Нажмите кнопку "Создать" в пользовательских средах (или глобальных, что ниже"), введите имя переменной, значение и нажмите "ОК"</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: left;">
Последнее действие необходимо проделать для переменной "<b>http_proxy</b>" и "<b>https_proxy</b>", мало ли что =)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
На этом всё. Дальше просто вызываете в командной строке <i><b>pip </b></i><i><b></b></i>с необходимыми параметрами <b>не </b>используя опцию <b><i>--proxy</i></b>.</div>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-56857095637058801032015-08-11T09:57:00.000+03:002015-08-11T09:58:15.826+03:00Маленькие помощники PowerShellНе владею данным, довольно мощным инструментом, в совершенстве, но иногда приходится выполнять какие-либо работы, в которых необходимо получить или собрать информацию из Active Directory. Консоль MMC не предоставляет того разнообразия функций, которые иногда требуются. Да, есть довольно интересная и в то же время такая же необходимая консоль ADExplorer от SysInternals, в которой тоже не всё так безоблачно. Но по крайней мере она уже может выполнять полноценный поиск по содержимому атрибутов объектов.<br />
<br />
Каждому удобны те инструменты, с которыми он привык работать и удовлетворяют его потребности. Но мне приглянулся вот такой скриптовый язык как PowerShell. Довольно продвинутый инструментов для выполнения повседневных задач администрирования и, немного, отчётности и инвентаризации. Пока многие его возможности мною не изучены, но иногда пишу быстрые однострочные команды, выбирающие всю необходимую мне информацию.<br />
<br />
Ввиду того, что часто эти операции одноразовые, мною они не были сохранены для возможности повторного использования. Надеюсь, и буду стараться, выкладывать сюда такие однострочные (а может быть и больше) помощники. Как предварительное требование, у Вас уже должна быть установлена поддержка работы PowerShell с Active Directory. Может быть она поставляется отдельно, но у меня она входила в пакет средств удалённого администрирования сервера для Windows 7 (<a href="https://www.microsoft.com/ru-ru/download/details.aspx?id=7887" target="_blank">KB958830</a>). Не забудьте включить этот компонент в оснастке<b> "Программы и компоненты" -> "Включение или отключение компонентов Windows"</b>:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jdL20qvD8L4/VcmYPdhMvfI/AAAAAAAAA-A/SSYGsnVXsV4/s1600/%25D0%259C%25D0%25BE%25D0%25B4%25D1%2583%25D0%25BB%25D1%258C%2BActive%2BDirectory%2B%25D0%25B4%25D0%25BB%25D1%258F%2BWindows%2BPowerShell.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="448" src="http://2.bp.blogspot.com/-jdL20qvD8L4/VcmYPdhMvfI/AAAAAAAAA-A/SSYGsnVXsV4/s640/%25D0%259C%25D0%25BE%25D0%25B4%25D1%2583%25D0%25BB%25D1%258C%2BActive%2BDirectory%2B%25D0%25B4%25D0%25BB%25D1%258F%2BWindows%2BPowerShell.png" width="640" /></a></div>
<br />
А дальше просто открываете консоль PowerShell и пишите что хотите =)<br />
<br />
Вот что у меня сохранилось.<br />
<pre class="brush:ps">Import-Module ActiveDirectory
# Незаблокированные ПК с установленной Windows XP
Get-ADComputer -Filter '(operatingSystem -eq "Windows XP Professional") -and (Enabled -eq "True")' -Properties * -SearchBase "ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX" -Server "DomainController" | Select-Object -Property Name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Sort-Object -Property Name | Export-Csv 'd:\out.csv' -UseCulture -NoTypeInformation
# Все незаблокированные компьютеры
Get-ADComputer -Filter '(Enabled -eq "True")' -Properties * -SearchBase "ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX" -Server "DomainController" | Select-Object -Property Name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Sort-Object -Property Name | Export-Csv 'd:\out.csv' -UseCulture -NoTypeInformation
</pre>
<br />
<pre class="brush:ps"># Список пользователей в контейнере.
import-module activedirectory
# Незаблокированные учётные записи
$user_list = Get-ADUser -Server "DomainController" -SearchBase "OU=XXXX,OU=XXXX,OU=XXXX,DC=XXXX,DC=XXXX,DC=XXXX" -Filter '(Enabled -eq "True")' | Select-Object -Property Name
# Все учётные записи
$user_list = Get-ADUser -Server "DomainController" -SearchBase "OU=XXXX,OU=XXXX,OU=XXXX,DC=XXXX,DC=XXXX,DC=XXXX" -Filter * | Select-Object -Property Name
foreach ($user in $user_list){
Write-Host $user.Name
}
Write-Host ""
Write-Host "Количество пользователей: " $user_list.Count
</pre>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-6418779171396779352015-06-23T14:23:00.004+03:002015-07-23T21:56:31.447+03:00Установка и настройка ScreenSquid 1.5 - анализатор логов для SQUIDПеред реализацией всей этой машинерии необходимо <a href="http://break-people.ru/cmsmade/?page=scriptology_screen_squid_files" target="_blank">скачать ScreenSquid</a> с сайта разработчика.<br />
Для нормальной работы MySQL с UTF-8 была проделана небольшая настройка:<br />
<pre class="brush:bash">[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
</pre>
Произведённые выше действия с конфигурационным файлов привели к корректной работе с кириллическими символами. Не знаю как будет у Вас, но у меня кириллица упорно сохранялась и отображалась в win1252 (latin1).<br />
После успешной загрузки и настройки MySQL распакуем полученный архив в директорию расположения веб-страниц:<br />
<pre class="brush:bash">sudo tar xzf screensquid_v1_5.tar.gz -С /var/www/</pre>
В связи с тем, что помимо анализатора логов ScreenSquid у меня там хранятся и другие страницы, переименую его:<br />
<pre class="brush:bash">sudo mv /var/www/html /var/www/screensquid/</pre>
Переходим к созданию базы данных, в которой будут храниться логи, и заполнению её таблицами (отношениями).<br />
Подключимся:<br />
<pre class="brush:bash">mysql -u[user_name] -p[password]</pre>
и создадим новую базу данных:<br />
<pre class="brush:sql">CREATE DATABASE squidreport DEFAULT CHARACTER SET=utf8;</pre>
после чего произведём её заполнение, воспользовавшись прилагаемым к ScreenSquid файлом createdb.sql:<br />
<pre class="brush:sql">SOURCE /var/www/squidreport/createdb/createdb.sql</pre>
Чтобы не подключаться и не светить права root создадим нового пользователя mysql и наделим его полными правами к созданной БД:<br />
<pre class="brush:sql">CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON squidreport.* TO 'user_name'@'localhost'; </pre>
С самой сложной часть сего Марлезонского балета покончено и мы плавно переходим к редактированию конфигурации ScreenSquid. Вместо <i><b>user_name</b></i> и <i><b>password</b></i> указываем те значения, которые мы ввели выше:<br />
<pre class="brush:bash">sudo vi /var/www/squidreport/config.php</pre>
<pre class="brush:perl">$db = "squidreport";
$user = "user_name";
$pass ="password";
$address ="localhost";</pre>
и в скрипте заполнения таблиц БД:<br />
<pre class="brush:bash">sudo vi /var/www/squidreport/fetch.pl</pre>
<pre class="brush:perl">my $user = "user_name";
my $pass = "password";
my $db = "squidreport";</pre>
В завершении всего этого безобразия настроим <b>cron</b> для запуска скрипта, который запускает парсер:<br />
<pre class="brush:bash">sudo crontab -e</pre>
куда добавим следующую запись:<br />
<pre class="brush:bash"># запуск каждый день в 23 часа
00 23 * * * /var/www/squidreport/fetch.sh</pre>
Сам файл представляет простейший скрипт следующего содержания:<br />
<pre class="brush:bash">#!/sbin/sh
cd /var/www/squidreport/
perl /var/www/squidreport/fetch.pl
</pre>
Можно, конечно же, переписать парсер, чтобы он принимал файл лога в качестве параметра вызова или прописать полный путь к нему, но я решил это не делать =) <br />
Казалось бы всё хорошо и работу можно считать законченной, но есть нюанс. Ротация логов <b>SQUID</b> выполняется не с помощью <b>squid -k rotate</b>, а с помощью программы <b>logrotate</b>, запускаемой с через <b>cron</b>. Указанный выше <b>logrotate</b> работает по расписанию <i>cron.daily</i>. Расписание запуска можно подсмотреть в <i>/etc/crontab</i>, где будет написано следующее:<br />
<pre class="brush:bash">25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )</pre>
Иными словами ротация логов происходит в 6:25 ежедневно. Но мы настроили, что <i>access.log</i> будет парситься 23:00. В итоге получаем, что время с 23:00 по 6:25 в базу данных попадать не будет.<br />
<br />
Меня это совсем не устраивает, поэтому было решено следующее. Т.к. после запуска <b>logrotate</b> к текущему <i>access.log</i> прибавляется 1, файл уже недоступен для SQUID для внесения в него изменений и считается сформированным, и именно по этой причине для заполнения базы данных будем использовать именно его. Для чего потребовалось внести небольшие изменения в файл парсера fetch.pl:<br />
<pre class="brush:perl" type="syntaxhighlighter">#open(IN, "<access.log");
open(IN, "<access.log.1");
while (my $line=<IN>) {
@item = split " ", $line;
</pre>
А вот на этом работу можно считать выполненной. Можно было сделать немного иначе. Например, вызывать парсер каждые N-минут(часов), но у меня нет необходимости иметь настолько своевременный отчёт, а мгновенный отчёт получаю с помощью <b>sqstat 1.20</b>, который прекрасно справляется со своей задачей.<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-48436433830989707872015-01-30T14:58:00.000+03:002015-02-22T18:15:34.837+03:00Ошибка E1-1000 в M118 и C118Чем только не приходится заниматься в последнее время на работе. Вот довелось и этими двумя МФУ\Копирами позаниматься. Принесли их с ошибкой E1-1000, которая описывает ошибку не активировавшегося датчика регистрации. Сервисная документация предлагает сделать несколько действий:<br />
<ol>
<li>Проверить транспортный ролик.</li>
<li>Удалить пыль на пути транспортировки бумаги.</li>
<li>С помощью проверки IO сервисного меню проверить датчик регистрации и муфту регистрации.</li>
<li>С помощью мультиметра и визуально проверить соединения и физические величины.</li>
</ol>
<br />
Проделал все указанные действия, даже смотрел мультиметров изменение выходного сигнала с датчика регистрации, но видимо не понял смысл п.2. Как обычно, всё работает, но ничего не работает. Итогом стала чистка оптики датчика регистрации методом его полного разбора. Там довольно просто устроено и спокойно разбирается с помощью обычного канцелярского ножа. Блок регистрации снимается простым отворачиванием двух винтов и поднятием его вверх проворачиванием против часовой стрелки. Сзади находятся два разъёма, один самого датчика, второй от муфты, которые необходимо извлечь.<br />
<br />
Также был снят и промыт датчик выхода из фьюзера. Там ещё проще. Снимается печка, снимается кожух датчика, откручивается один винт и снимается разъём. Разбирается немного иначе, но разбирается. Оптика также промылась и протёрлась.<br />
<br />
В завершении были смазаны вращающиеся части, ибо скрип и писк были ужасающими.<br />
<br />
Итог: в процессе прогона 200 листов ошибка больше не повторялась.<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-10385463220990931282015-01-28T15:35:00.000+03:002015-01-28T15:35:57.679+03:00Перед запуском SQUID 3.4.11"Волею судеб" пришлось столкнуться с этим зверем. После установки на FreeBSD появился вот такой стартовый мануальчик, который надо не забыть, ибо... могу =)<br />
<br />
Файлы конфигурации можно найти в папке <i>/usr/local/etc/squid</i><br />
<br />
Директория по умолчанию для хранения кэша <i>/var/squid/cache</i><br />
<br />
Директория по умолчанию для хранения логов <i>/var/log/squid/</i><br />
<blockquote class="tr_bq">
Примечание. Перед запуском SQUID необходимо инициализировать новые директории для хранения кэша. Выполняется это запуском "<b>squid -z</b>" с правами 'root' или 'squid'. Если директории кэш уже инициализированы (например, после обновления SQUID) производить инициализацию нет необходимости. </blockquote>
<br />
Конфигурация по умолчанию блокирует доступ ко всем сервисам, кроме локального хоста и локальных сетей, определённых в RFC 1918 для IPv4 и RFC 4291 для IPv6.<br />
<br />
Для включения SQUID, добавить "<b>squid_enable=yes</b>" в одном из мест<i> /etc/rc.conf,</i> <i>/etc/rc.conf.local</i> или <i>/etc/rc.conf.d/squid</i>. За подробностями обращайтесь к <i>/usr/local/etc/rc.d/squid</i>.<br />
<blockquote class="tr_bq">
Примечание. Если вы обновляете SQUID с младшей версии, необходимо сравнить конфигурацию SQUID с конфигурационным файлом по умолчанию <i>/usr/local/etc/squid/squid.conf.sample</i>.</blockquote>
<br />
<i>/usr/local/etc/squid/squid.conf.documented</i> это полностью комментированный файл конфигурации, который вы можете использовать.<br />
<br />
В завершении, вы должны проверить файл конфигурации перед запуском SQUID: "<b>squid -f /path/to/squid.conf -k parse</b>".<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-21028541942110120742013-12-23T12:18:00.001+04:002014-01-11T09:47:00.676+04:00Конвертируем образ виртуальной машины VMWare в VirtualBoxНедавно попался мне в руки образ виртуальной машины VMWare *.vmdk. Ну попался и попался, надо же его открыть. Лезу на сайт и скачиваю VMWare Player, которые вроде как бесплатен (ну мы же не пользуемся пиратским ПО, правда?). А эта собака ни в какую не захотела ставиться на мой старенький ноутбук DELL Letitude L110 с процессором Celeron 1,4GHz, не поддерживается он, видите ли.<br />
<br />
Закатав рукава и скачав Oracle VM VirtualBox, начал пытаться скормить образ своей виртуалки. Естественно, в таком виде жрать это никто не собирался. Немного пошарив в "этих ваших тырнетах" нашёл рецепт, который, оказывается, я уже знал, но забыл))<br />
<br />
Итак, рецепт.<br />
<br />
1. Идём и ищем <a href="https://drive.google.com/file/d/0Bz4Ul7MGCfMuMWZLT1dTV3FGRmM/edit?usp=sharing" target="_blank">qemu-img</a> из пакета QEMU. Далеко можете не ходить, я его уже <a href="https://drive.google.com/file/d/0Bz4Ul7MGCfMuMWZLT1dTV3FGRmM/edit?usp=sharing" target="_blank">собрал и положил в надёжном месте</a>.<br />
2. Качаете Oracle VM VirtualBox (ссылку давать не буду, они часто обновляются).<br />
3. Немного шаманите с командной строкой:<br />
<pre class="brush:bash">qemu-img convert image.vmdk image.bin
VBoxManage convertdd image.bin image.vdi
</pre>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-3618176181064926392013-12-07T18:30:00.001+04:002013-12-07T18:30:35.473+04:00Ошибка 720 при подключении через PPPoE в Windows 8<div style="text-align: justify;">
Наши знакомые, являющиеся к тому же соседями по даче, вляпались в указанную ошибку после обновления антивируса Avast. Про..лся с этой ошибкой 2 дня по 3 часа каждый, но <a href="http://answers.microsoft.com/ru-ru/windows/forum/windows_8-networking/%D0%BF%D0%BE%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82/61f455ac-ad5e-496c-a0df-cb2a675c7d1a?page=2" target="_blank">решение таки было найдено на просторах тырнета</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Итак, нам понадобится командная строка (или сценарий bat), клавиатура и некоторое время свободного времени.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
1. Запускаем командную строку с правами Администратора и вводим последовательно:</div>
<div class="msgBody wrapWord fullMessage">
<pre class="brush:bash">netsh int teredo set state disabled
netsh int isatap set state disabled
netsh int 6to4 set state disabled
netsh interface reset all
netsh interface ip reset resetlog.txt
netsh interface ipv4 reset resetlog.txt
netsh interface ipv6 reset resetlog.txt
netsh winsock reset
netsh firewall reset
</pre>
<div style="text-align: justify;">
2. Произведём перезагрузку после указанных операций и продолжим свои мучения в той же командной строке с теми же правами Администратора:</div>
<pre class="brush:bash">Netcfg -u ms_pppoe
Netcfg -u ms_pptp
Netcfg -u ms_l2tp
Netcfg -u ms_ndiswan
Netcfg -u ms_ndiswanbt
Netcfg -u ms_ndiswanipv6
Netcfg -u ms_netbt_smb
Netcfg -u ms_netbt
Netcfg -u ms_tcpip #здесь у меня система уходила в даун и ресет
Netcfg -u MS_AgileVpnMiniport
Netcfg -u MS_TCPIP6_TUNNEL
Netcfg -u MS_TCPIP6
</pre>
<div style="text-align: justify;">
3. Производим третью плановую перезагрузку и добиваем несчастное чёрное окно командной строки:</div>
<pre class="brush:bash">
netsh int teredo set state enabled
netsh int teredo set state default
netsh int isatap set state enabled
netsh int 6to4 set state enabled
Netcfg -l %windir%\inf\netrast.inf -c p -i ms_pppoe
Netcfg -l %windir%\inf\netrast.inf -c p -i ms_pptp
Netcfg -l %windir%\inf\netrast.inf -c p -i ms_l2tp
Netcfg -l %windir%\inf\netrast.inf -c p -i ms_ndiswan
Netcfg -l %windir%\inf\nettcpip.inf -c p -i ms_netbt_smb
Netcfg -l %windir%\inf\netrast.inf -c p -i ms_ndiswanbt
Netcfg -l %windir%\inf\netrast.inf -c p -i ms_ndiswanipv6
Netcfg -l %windir%\inf\nettcpip.inf -c p -i ms_netbt
Netcfg -l %windir%\inf\nettcpip.inf -c p -i ms_tcpip
Netcfg -l %windir%\inf\netavpna.inf -c p -i MS_AgileVpnMiniport
Netcfg -l %windir%\inf\netip6.inf -c p -i MS_TCPIP6
Netcfg -l %windir%\inf\netip6.inf -c p -i MS_TCPIP6_TUNNEL
</pre>
<div style="text-align: justify;">
4. Очередной раз перезагружаем и вносим изменения в реестр. Хотите - ручками, хотите - создайте файл с расширением *.reg и запустите.</div>
<pre class="brush:bash">
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\tunnel]
"Type"=dword:00000001
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"Tag"=dword:00000015
"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,74,00,75,00,6e,00,6e,00,65,00,6c,\
00,2e,00,73,00,79,00,73,00,00,00
"DisplayName"="Microsoft Tunnel Miniport Adapter Driver"
"Group"="NDIS"
"NdisMajorVersion"=dword:00000006
"NdisMinorVersion"=dword:00000014
</pre>
<div>
5. Последний раз перезагружаем и наслаждаемся выполненной работой. </div>
<br />
<div style="text-align: justify;">
Честно признаюсь, п.4 не выполнял, т.к. оно и само заработало неплохо. Всё это было бы неплохо собрать в *.bat и запускать его, но для единичной операции делать было лень, а так, заменой нескольких символов в командной строке вполне себе шустренько получилось. </div>
</div>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-18718706666209522012013-11-24T01:09:00.000+04:002013-11-24T01:09:21.706+04:00Чистка блогаСегодня было решено разбить всю мою писанину на два блога:<br />
<ol>
<li>Всё, что связано с IT и железом оставить <a href="http://drels.blogspot.com/">по этому адресу</a>.</li>
<li>Моё нытьё, возмущения и остальной трэш перенести <a href="http://drels-life.blogspot.com/" target="_blank">сюда</a>.</li>
</ol>
<div style="text-align: justify;">
На всякий случай, вдруг кто читает последнее, вынес в созданный раздел "Мои блоги".</div>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-84052488324707055672013-11-02T17:16:00.001+04:002013-11-02T17:16:31.426+04:00Ошибка 800b0001 при обновлении WINDOWS 8 Являюсь "счастливым" обладателем данной ОС. Сказать, что она доставляет немало проблем - ничего не сказать. Недавно появилась ещё одна. Намедни пришлось установить пакет программ, необходимых для подключения к одной системе. Т.к. этой ОС уже давно не пользовался, думаю, что накопилось большое количество обновлений. Ну, раз пришлось работать в Винде, то решил их накатить. А не тут то было! Попытка поиска обновлений обрывалась с выводом ошибки 800b0001.<br />
<br />
Полазив по тырнетам и практически не найдя ничего толкового, но получив направление раздумий, решил, что дело в криптографии. Т.к. в ОС существует своя служба, отвечающая за это дело, а мною была ещё и установлена КриптоПРО, начал копать в этом направлении.<br />
<br />
В общем, ларчик просто открывался. Была загружена более новая версия пакета <a href="https://www.cryptopro.ru/system/files/private/csp/36R3/7491/CSPSetup.exe" target="_blank">КриптоПРО CSP 3.6 R3 7491</a>, установлена, компьютер перезагружен. Обновления начали ходить, магазин приложений также заработал. Профит))<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-69003311816714696682013-05-14T21:54:00.000+04:002015-02-22T18:23:21.868+03:00Библиотека для работы с MSAM, AD DS и AD LDS<div style="text-align: justify;">
Понадобилось вот мне (точнее не мне :-) ) получить список администраторов и опытных пользователей на локальных машинах. Для получения требуемой информации сначала хотел использовать WMI, потом PowerShell. Потом вообще передумал. Решил использовать WSH (vbs). Упёрся в то, что на наших машинах каждый день запускается checkcfg, собирающий информацию о машине, а он вроде как исполняемый. Можно было выкрутиться и сделать батничек, скомпилированный в экзешничек, запускающий скриптик, но чем-то этот метод мне не понравился))</div>
<br />
<div style="text-align: justify;">
Поэтому решил использовать C#, который по мере возможности я пихаю при каждом удобном случае)) В общем, в закромах .NET Framework была найдена библиотека, которая просто влила жизнь в мою задачу, а также оставила зарубки в мозгу для последующего воплощения требующихся задач. Библиотека эта:</div>
<div style="text-align: center;">
<b>System.DirectoryServices.AccountManagement</b></div>
<div style="text-align: justify;">
Умеет она не просто всё, что требуется в повседневной жизни администратора, но делает это ещё с песнями и плясками. В общем, просто немедленно рекомендую почитать <a href="http://msdn.microsoft.com/ru-ru/library" target="_blank">MSDN </a>в части, касающейся <a href="http://msdn.microsoft.com/ru-ru/library/system.directoryservices.accountmanagement.aspx" target="_blank">данной библиотеки</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
В общем, напишу для себя заметку, дабы не забыть, а там может ещё кому пригодится или даст толчок к новым знаниям.</div>
<div style="text-align: justify;">
<pre class="brush:csharp">using (PrincipalContext ctx = new PrincipalContext(ContextType.Machine))
{
using (GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "Администраторы"))
{
using (PrincipalSearchResult<principal> results = gp.GetMembers())
{
foreach (var item in results)
{
if (item.StructuralObjectClass != null
&& item.StructuralObjectClass.Equals("user"))
{
Console.Writeline(item.SamAccountName);
}
}
}
}
}</pre>
</div>
<div style="text-align: justify;">
Как можно увидеть, я воспользовался MSAM (диспетчером учётных записей безопасности компьютера).
</div>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-88228620189131501572012-12-05T11:52:00.005+04:002012-12-06T20:59:29.298+04:00Настраиваем безопасность Internet Explorer 8 через реестрПродолжают поступать распоряжения по автоматизации выполнения некоторых трудоёмких процессов. Теперь выбор пал на повсеместное обновление Internet Explorer до 8 версии. Также необходимо сразу настроить разрешения в ActiveX и другие настройки безопасности.<br />
<br />
Все настройки находятся в реестре, но понять что за что отвечает довольно сложно. В общем, ока раскопал настройки ActiveX через реестр:<br />
<pre class="brush:csharp"> //Существует 5 зон безопасности:
//0 - "Мой компьютер"
//1 - "Местная интрасеть"
//2 - "Надёжные узлы"
//3 - "Интернет"
//4 - "Ограниченные узлы"
RegistryKey _ActiveX = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default)
.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2", true);
//Значение ключа реестра:
//0 - включить
//1 - предлагать
//3 - отключить
//65536 - допущенных администратором
//загрузка подписанных элементов ActiveX
_ActiveX.SetValue("1001", "0", RegistryValueKind.DWord);
//загрузка неподписанных элементов ActiveX
_ActiveX.SetValue("1004", "0", RegistryValueKind.DWord);
//запуска элементов ActiveX и модулей подключения
_ActiveX.SetValue("1200", "0", RegistryValueKind.DWord);
//использование элементов управления ActiveX, не помеченных как безопасные для использования
_ActiveX.SetValue("1201", "0", RegistryValueKind.DWord);
//разрешить запуск элементов ActiveX, которые не использовались ранее, без предупреждения
_ActiveX.SetValue("1208", "0", RegistryValueKind.DWord);
//разрешить сценарии
_ActiveX.SetValue("1209", "0", RegistryValueKind.DWord);
//показывать видео и анимацию на вебстранице, не использующей внешний проигрыватель
_ActiveX.SetValue("120A", "0", RegistryValueKind.DWord);
//разрешать использовать ActiveX без запроса только утверждённым доменам
_ActiveX.SetValue("120B", "3", RegistryValueKind.DWord);
//выполнять сценарии элементов ActiveX, помеченные как безопаснии
_ActiveX.SetValue("1405", "0", RegistryValueKind.DWord);
//поведение двоичного кодов и сценариев
_ActiveX.SetValue("2000", "0", RegistryValueKind.DWord);
//автоматические запросы элементов управления ActiveX
_ActiveX.SetValue("2201", "0", RegistryValueKind.DWord);
_ActiveX.Close();
</pre>
<br />
<br /><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-7389445806580179992012-11-15T11:14:00.003+04:002012-11-27T20:05:47.087+04:00Отправка сообщений MessageBox из Windows Server 2008Многим уже давно известно, что в данной ОС, наряду с Windows Vista, 7 и 8 отключили такую фичу как <b>net send</b>. А мне вот поставили задачу рассылать сообщения с данного сервера. Тыкался-мыкался, но решение было найдено. Путём быстрых поисков был найден аналог прошлой утилиты, называется <b>msg</b>. Работать с ней просто, но вот сообщения на машины под управлением Windows XP отсылаться ни в какую не хотят. Но и это также просто лечится. Для этого надо произвести довольно простые манипуляции с реестром.<br />
<br />
Открываем реестр и добавляем туда параметр с ключём по указанному пути:<br />
<blockquote class="tr_bq">
<b>HKLM</b>\System\CurrentControlSet\Control\Terminal Server<br />
<b>DWORD</b>=AllowRemoteRPC<br />
<b>VALUE</b>=1</blockquote>
<div>
Для того, чтобы изменения вступили в силу перезагружаем компьютер. Всё, на этом наши страшные манипуляции закончились. Теперь достаточно в Server 2008 в консоли написать команду:
<br />
<pre class="brush:bash">msg /server:Comp01 * Hello World!!!</pre>
и на указанном Comp1 появится посланное ему сообщение)) И что самое полезное и хорошее в данном решении, так это то, что на указанных компьютерах можно <b>не включать Службу Сообщений</b>, которая зачастую отключена политикой безопасности многих компаний.<br />
<br />
ЗЫ: В процессе эксплуатации выяснился интересный момент. На некоторых машинах, где не прописан указанный ключ в реестре, сообщение всё равно появляется. А некоторые без данной записи отображать ни в какую не хотят... Непонятно, однако...<br />
ЗЗЫ: В процессе эксплуатации выяснилось, что на тех машинах, на которых отсутствует профиль пользователя с которого отсылаются сообщения с сервера, сообщения отправляться не будут. В связи с этим дальнейшая эксплуатация данной утилиты затруднена(( Будем продолжать искать другие решения данной проблемы. Одним из которых станет служба, которую я уже почти дописал.</div>
<div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-89829429569863061742012-10-21T14:41:00.002+04:002012-10-21T14:44:12.101+04:00Установка Firebird Net Provider для разных версий .Net Framework<div>
Работа с этим провайдером Firebird под .Net Framework для меня в новинку, но, имея за плечами трехлетний опыт работы с провайдером для MySQL, я не ожидал подвоха - а зря. Хотя разработчики и выложили на официальном <a href="http://www.firebirdsql.org/en/net-provider/">сайте</a> установочный пакет, процесс установки оказался гораздо сложнее серии кликов по кнопке "Далее". Во-первых. Установщик всего лишь складывает несколько файлов в папку "c:\Program Files\FirebirdClient\", регистрацию в GAC нужно делать ручками, но и здесь заботливо подложены грабельки, о них далее... Во-вторых. Опять же, хотя разработчики и написали, что Version 2.7.0 for .NET 4.0/3.5/2.0 with Entity Framework support, но на самом деле работать с этим провайдером можно только из под 4 фреймворка, 3.5 его не увидит. И так, доделываем работу разработчиков, и устанавливаем дополнительно DDEX Provider for Visual Studio downloads (интегрирует провайдер в Visual Studio для конструирования источников данных непосредственно из IDE) Первое. Не качаем, а если скачали удаляем нафиг msi пакет с оф-сайта. На данный момент актуальной является версия 2.7.0. Находим на сайте архив <a href="http://sourceforge.net/projects/firebird/files/firebird-net-provider/2.7.7/NETProvider-2.7.7.zip/download">NETProvider-2.7.7.zip</a> и, если необходимо, <a href="http://sourceforge.net/projects/firebird/files/firebird-net-provider/2.7.7/NETProvider-2.7.7-NET35.7z/download">NETProvider-2.7.7-NET35.7z</a>. Скачиваем. В первом архиве лежит сборка провайдера под 4 фреймворк, во втором под третий. Создаем в Programm Files папку с говорящим названием FirebirdClient и в ней папки net3.5 и net4.0. Распаковываем содержимое архивов соответствующим образом, каждый в свою папку. Теперь нужно зарегистрировать провайдер в кеше сборок, каждый в своем. Так как в комплекте с Visual Studio идет gacutil только для 4 фреймворка, то для 3.5 нужно искать свой. Лежит он по следующему адресу "c:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\gacutil.exe". Запускаем его и выполняем следующую команду: </div>
<a href="http://drels.blogspot.com/2012/10/firebird-net-provider-net-framework.html#more">Читать полностью »</a><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com2tag:blogger.com,1999:blog-4149960046949757170.post-69192768519415271962012-10-01T16:13:00.002+04:002012-11-18T23:47:42.249+04:00DataGridView и DataGridViewComboBox из другой таблицыПродолжаю осваивать C# и изучать программирование вообще. Также продолжаю объединять своё уже бесчисленное количество маленьких, помогающих мне наработок. Объединять собрался с использование СУБД Firebird. Почему именно на ней? - не спрашивайте. Просто у меня есть книга по ней)) Да и когда-то приходилось с ней сталкиваться.<br>
<a href="http://drels.blogspot.com/2012/10/datagridview-datagridviewcombobox.html#more">Читать полностью »</a><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-8709878865702927262012-07-13T09:18:00.000+04:002012-11-19T00:03:25.788+04:00Работа с кустом HKEY_USERS или преобразование USER->SID с помощью C#Продолжая автоматизировать свою деятельность с помощью самописных программок столкнулся с проблемой записи в куст<b> HKEY_CURRENT_USER</b>. Удалённо записать туда не представляется возможных, лишь только если сам пользователь запустит нужный мне скрипт или программу. Но выход есть. Все пользователи указанного компьютера имеют ветку в кусте <b>HKEY_USERS</b>, но добраться до неё можно лишь узнав <b>SID </b>(<b>Security Identificator</b>, идентификатор безопасности), под которым пользователь компьютера там числится.<br>
<a href="http://drels.blogspot.com/2012/07/hkeyusers-c.html#more">Читать полностью »</a><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0tag:blogger.com,1999:blog-4149960046949757170.post-59760432798681358652012-07-11T14:39:00.000+04:002012-09-27T16:21:58.893+04:00Посылаем сообщения через Exchange с помощью C#Понадобилось мне тут намедни сообщение отправлять автоматически. Долго ломал голову как это организовать с помощью установленного Microsoft Outlook из офисного пакета, но кроме как использовать его COM ничего не придумал. Но это не удобно же. В итоге, долго ковыряясь в просторах тырнета в поисках решения этой проблемы наткнулся на MSDN, где рассказывалось про такой замечательный <b><a href="http://msdn.microsoft.com/en-us/library/dd633696(v=exchg.80)" target="_blank">Exchange Web Services Managed API SDK</a>.</b> Это просто кладезь для работы с Exchange'ем. Пока только начал его рассматривать, да и многое от него не требуется, но отправить с использованием данного API сообщение (даже с вложением) просто как раз-два-три.<br>
<a href="http://drels.blogspot.com/2012/07/exchange-c.html#more">Читать полностью »</a><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com2tag:blogger.com,1999:blog-4149960046949757170.post-753175046739798962012-07-05T20:10:00.001+04:002015-01-28T14:51:23.977+03:00USB-WiFi адаптер и UBUNTU-Server 11.10Уж очень хотелось избавиться от проводов в своём NASике. По этому поводу пришлось вляпаться в <a href="http://dx.com/p/leguang-lg-n18-150mbps-ieee802-11-b-g-n-usb-2-0-wi-fi-wireless-network-adapter-black-dc-5v-121069" target="_blank">такой</a> адаптер, найденный мною на просторах тырнета. Коробочка ничё так, содержание тоже соответствует - адаптер и диск с дровами.<br>
<br>
Ну а теперь к делу. Всё это безобразие надо было прикрутить к своему NASу, который уже давно, работая, пылится на столе без проводов и доступа в сеть. Т.к. PCI на материнской плате всего 1 и я его держу немного для других целей, нежели втыканием в оный WiFi карты, поэтому и решено было приобрести USB. Приобрести-то приобрёл, а вот с прикручиванием оного к Ubunt'е пришлось повозюкаться... даже извозюкаться)))<br>
<a href="http://drels.blogspot.com/2012/07/usb-wifi-ubuntu-server-1110.html#more">Читать полностью »</a><div class="blogger-post-footer">При любых условиях - жизненных ли, бытовых ли, невзгодах и неудачах - оставайтесь людьми. Такими же добрыми, интересными, умными, человечными...</div>Anonymoushttp://www.blogger.com/profile/13249663448421858378noreply@blogger.com0