Если ты знаешь, что русские затачивают лопаты, то должен знать, что они гнусные безбожники. Потому что ругаются в Бога и в Христа.

- Должно быть, сэр, это им позволено.

- Кем позволено?!

- Господом, сэр. Кто еще может позволить ругаться таким именем и никак не наказывать за кощунство? Только Господь. Ведь не наказал же он русских?

- Потому что тупых грязных свиней бессмысленно наказывать!

- Вы не правы, сэр. Бог наказывает их все время, но совсем иначе. А ругательство это, сэр, вовсе и не ругательство.

- Что же еще, если они позорят даже Богоматерь?- только сейчас Джейсон начинал чувствовать боль в голове.

- Молитва, сэр,- невозмутимо проговорил Густав.- Это трудно себе представить, но - молитва. Только произносят ее не в храме, и не перед сном, а в бою. Это боевая молитва русских. Она имеет очень древние корни. Славяне таким образом призывали богов на помощь в битве. А когда к ним пришло христианство, традиция сохранилась. И новый Господь позволил варварам молиться по-прежнему. И сегодня русские парни весьма искренне молились, потому к ним пришла удача.
.....Господь питает любовь к русским.
URL
При переустановке puppetmaster появилась следующая херня

/usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find puppet (>= 0) amongst [] (Gem::LoadError)
from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/lib/ruby/1.9.1/rubygems.rb:1231:in `gem'
from /usr/local/bin/puppet:22:in `'

нужно сделать
gem install puppet

@темы: ruby, puppet, error

1) Качаете tar.gz версию — это просто архив
2) распаковываете его куда-нибудь. Например, в ~/java
3) Устанавливате java Plugin для Firefox-а
типа такого:
mkdir -p ~/.mozilla/plugins
ln -s ~/java/jdk1.7.0_04/jre/lib/amd64/libjavaplugin_jni.so ~/.mozilla/plugins/
ln -s ~/java/jdk1.7.0_04/jre/lib/amd64/libnpjp2.so ~/.mozilla/plugins/


@темы: java, Линукс

Go to Epson Download Page (download.ebz.epson.net/dsc/search/01/search/sea...) and download this files (just search for “V33″;):

iscan-data_1.28.0-2_all.deb
iscan_2.29.3-1~usb0.1.ltdl7_amd64.deb
esci-interpreter-perfection-v330_0.2.0-1_amd64.deb

(Version numbers may have changed !)
Installation

Now install first xsltproc:

apt-get install xsltproc

and install the downloaded iscan packages:

dpkg -i iscan-data_1.28.0-2_all.deb
dpkg -i iscan_2.29.3-1~usb0.1.ltdl7_amd64.deb
dpkg -i esci-interpreter-perfection-v330_0.2.0-1_amd64.deb


@темы: scanner, sane, epson

Проверено на Xubuntu 12.04 и 14.04

sudo x11vnc -storepasswd /etc/x11vnc.pass


lightDM
upstart job. Put this in /etc/init/x11vnc.conf :





lxdm – LUbuntu) – LXDM doesn’t seem to emit the right event, but instead is has /etc/lxdm/LoginReady which lets you specify pre-login events. However, we need to first get the xauth setup properly. Edit /etc/lxdm/lxdm.conf and uncomment the line:






This specifies that we’re going to use a different xauth path; we also need to update the /etc/lxdm/LoginReady file with our x11 command, using the updated xauth path.
Put this in /etc/lxdm/LoginReady:



mdm – Mint LMDE
Mint LMDE (Debian edition) doesn’t use the upstart things; instead, put this at the end of /etc/mdm/Init/Default:




Note that this uses the auth path for mdm which is /var/lib/mdm/:0.Xauth

@темы: xubuntu, vnc, logon-screen, x11vnc

1) service cups stop

2) nano /etc/cups/printers.conf

отредактировать или

3) Переименовать в /etc/cups/ppd/ соответствующий принтеру ppd файл

4) service cups start

@темы: cups

server1=cups
server2=mysql, ahache, php

server2
Создать базу, пользователя с правами на эту базу





Web интерфейс скопировать в /var/www/cups/
отредактировать config.php
Необходимо указать:
- хост, на котором крутится MySQL,
- имя пользователя
- пароль на доступ к просмотру статистики,
- имя пользователя MySQL
- пароль для доступа к MySQL.

Для отображения круговых диаграмм нужен пакет gd

aptitude install php5-gd



server1
скрипт cups-export.py для экспорта данных из page_log в mysql
добавить в cron




@темы: cups, mysql

На всех компах ставим sane

sudo apt-get install sane

/etc/default/saned


на сервере
/etc/sane.d/saned.conf


на клиентах


везде
service saned restart

Если возникает ошибка Unable to get open device: Access to resource has been denied
то на севере
chmod a+rw /dev/bus/usb/001/004
где 001 и 004 берётся из строки вывода команды lsusb



@темы: scaner, sane

cupsd.conf:



@темы: cups

Ручная настройка

На сервере (тот, который управляет и подсоединён к принтеру) просто откройте файл /etc/cups/cupsd.conf и разрешите доступ к серверу, изменив строчки с тэгом Location. Например:



!_не_надо Также убедитесь, что серверу для адресации доступен IP-адрес клиента. Добавьте следующие строки после "# Listen :631" (192.168.0.100 - IP-адрес сервера, а не клиента):



Для отображения всех доступных принтеров локальной сети "Show shared printers on the local network", добавьте строку "BrowseAllow all":



После внесения всех изменений, перезапустите CUPS:

# /etc/rc.d/cupsd restart

!_не_надо На стороне клиента откройте (создайте, если отсутствует) файл /etc/cups/client.conf и укажите в ServerName соответствующее имя сервера или его IP-адрес. Добавьте эту строку:



Для отображения всех доступных принтеров локальной сети "Show shared printers on the local network", добавьте строку "BrowseAllow all"



Есть другие возможности для настройки, включая автоматическую, которые подробно описаны на localhost:631/help/network.html

После внесения всех изменений, перезапустите CUPS.
Note: При добавлении принтера с клиентского компьютера, если используется Internet Printing Protocol (IPP), в качестве URI укажите ipp://192.168.0.100:631/printers/<имя_нужного_принтера>

@темы: cups, printer

sudo apt-get install mp3splt

mp3splt -t 10.00 01-kogda-bogi-spyat.mp3


@темы: audio, mp3

pdf2ps file.pdf

ps2pdf file.ps

rm file.ps


@темы: pdf

touch /etc/polkit-1/localauthority/50-local.d/52-wifi-management.pkla


@темы: sudo, netdev, wifi

xfwm4 --replace

@темы: xfce

Запись звука


Записать звук можно с помощью команды arecord:
$ arecord -f S16_LE -r44100 filename.wav
Получится файл формата WAVE, заголовки в нём будут.
Чтобы прослушивать себя в реальном времени, можно воспользоваться этой же командой, только вывод перенаправлять в aplay:
$ arecord -f S16_LE -r44100 | aplay
Флаг -f нужен, чтобы формат был такой же, как на CD, во-первых, это нужно для совместимости, во-вторых, по умолчанию используется восемь бит, и это звучит ужасно. Флаг -r нужен для указания частоты дискретизации, по умолчанию используется 8 кГц, это мало, запись и воспроизведение очень плохие.

-----------------

на удалённом компе

arecord -f S16_LE -r44100 | ssh user@host 'aplay'

на локальном

ssh user@host 'arecord -f S16_LE -r44100'|aplay

@темы: запись звука, arecord, sound record

<?php //==================================================================================== // OCS INVENTORY REPORTS // Copyleft Erwan GOALOU 2010 (erwan(at)ocsinventory-ng(pt)org) // Web: www.ocsinventory-ng.org // // This code is open source and may be copied and modified as long as the source // code is always made freely available. // Please refer to the General Public Licence www.gnu.org/ or Licence.txt //==================================================================================== // Attention: this sсript was only tested with OCS v2.0 require('dbconfig.inc.php'); $_SESSION["SERVER_READ"] = SERVER_READ; $_SESSION["SERVER_WRITE"] = SERVER_WRITE; $_SESSION["COMPTE_BASE"] = COMPTE_BASE; $_SESSION["PSWD_BASE"] = PSWD_BASE; // Number of days since the last hardware update to consider for deletion. $delay = 40; dbconnect(); $res = mysql_query('SELECT ID FROM hardware where LASTDATE <= \'' . date('Y-m-d H:i:s', mktime() - $delay * 24 * 3600) . '\' ORDER BY LASTDATE'); if (mysql_num_rows($res) > 0) while ($row=mysql_fetch_array($res)) deleteDid($row['ID'], false, true); else echo "Nenhum registro foi apagado."."\n"; #function dbconnect($server,$compte_base,$pswd_base,$db = DB_NAME) { function dbconnect() { global $link; $db = DB_NAME; //$link is ok? $link=mysql_connect($_SESSION["SERVER_READ"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]); if(!is_resource($link)) { echo "Erro ao conectar ao MySql\n"; } //database is ok? if( ! mysql_select_db($db,$link)) { echo "Erro ao executar SELECT\n"; } //force UTF-8 mysql_query("SET NAMES 'utf8'"); //sql_mode => not strict mysql_query("SET sql_mode='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'"); return $link; } function mysql2_query_secure($sql,$link,$arg='',$log=false){ global $l,$lbl_log; if (is_array($arg)){ foreach ($arg as $key=>$value){ $arg_array_escape_string[]=mysql_real_escape_string($value); } $arg_escape_string=$arg_array_escape_string; }elseif ($arg != ''){ $arg_escape_string=mysql_real_escape_string($arg); } if (isset($arg_escape_string)){ if (is_array($arg_escape_string)){ $sql = vsprintf($sql,$arg_escape_string); }else $sql = sprintf($sql,$arg_escape_string); } $query = $sql; if ($log){ addLog( $log, $query,$lbl_log); } $result=mysql_query( $query ) or mysql_error($link); return $result; } /** * Deleting function * @param id Hardware identifier to be deleted * @param checkLock Tells wether or not the locking system must be used (default true) * @param traceDel Tells wether or not the deleted entities must be inserted in deleted_equiv for tracking purpose (default true) */ function deleteDid($id, $checkLock = true, $traceDel = true, $silent=false) { global $l; //If lock is not user OR it is used and available if( ! $checkLock || lock($id) ) { $sql="SELECT deviceid,name,IPADDR,OSNAME FROM hardware WHERE id='%s'"; $resId = mysql2_query_secure($sql,$_SESSION["SERVER_READ"],$id); $valId = mysql_fetch_array($resId); $idHard = $id; $did = $valId["deviceid"]; if( $did ) { //Deleting a network device if( strpos ( $did, "NETWORK_DEVICE-" ) === false ) { $sql="SELECT macaddr FROM networks WHERE hardware_id='%s'"; $resNetm = mysql2_query_secure($sql, $_SESSION["SERVER_READ"],$idHard); while( $valNetm = mysql_fetch_array($resNetm)) { $sql="DELETE FROM netmap WHERE mac='%s'"; mysql2_query_secure($sql, $_SESSION["SERVER_READ"],$valNetm["macaddr"]); } } //deleting a regular computer if( $did != "_SYSTEMGROUP_" and $did != '_DOWNLOADGROUP_') { $tables=Array("accesslog","accountinfo","bios","controllers","drives", "inputs","memories","modems","monitors","networks","ports","printers","registry", "slots","softwares","sounds","storages","videos","devices","download_history","download_servers","groups_cache"); } elseif($did == "_SYSTEMGROUP_"){//Deleting a group $tables=Array("devices"); //del messages on this group $sql_group_msg="DELETE FROM config WHERE name like '%s' and ivalue='%s'"; mysql2_query_secure($sql_group_msg, $_SESSION["SERVER_WRITE"],array('GUI_REPORT_MSG%',$idHard)); $sql_group="DELETE FROM groups WHERE hardware_id='%s'"; mysql2_query_secure($sql_group, $_SESSION["SERVER_WRITE"],$idHard); $sql_group_cache="DELETE FROM groups_cache WHERE group_id='%s'"; $resDelete = mysql2_query_secure($sql_group_cache, $_SESSION["SERVER_WRITE"],$idHard); $affectedComputers = mysql_affected_rows(); } if( !$silent ) echo "apagando registro ".$valId["name"]."\n"; foreach ($tables as $table) { $sql="DELETE FROM %s WHERE hardware_id='%s'"; $arg=array($table,$idHard); mysql2_query_secure($sql, $_SESSION["SERVER_WRITE"],$arg); } $sql="delete from download_enable where SERVER_ID='%s'"; mysql2_query_secure($sql, $_SESSION["SERVER_WRITE"],$idHard); $sql="DELETE FROM hardware WHERE id='%s'"; mysql2_query_secure($sql, $_SESSION["SERVER_WRITE"],$idHard); //Deleted computers tracking if($traceDel && mysql_num_rows(mysql2_query_secure("SELECT IVALUE FROM config WHERE IVALUE>0 AND NAME='TRACE_DELETED'", $_SESSION["SERVER_READ"]))){ $sql="insert into deleted_equiv(DELETED,EQUIVALENT) values('%s',%s)"; $arg=array($did,'NULL'); mysql2_query_secure($sql, $_SESSION["SERVER_WRITE"],$arg); } } //Using lock ? Unlock if( $checkLock ) unlock($id); return $valId["name"]; } else errlock(); } ?>


скопировать в /usr/share/ocsinventory-reports/ocsreports

Запускать так:

php -f delete_old_v2.0.php


@темы: script, ocsinventory

, windows



В результате, мы "построили свой лунапарк с VBS и пользователями", и написали 2 небольших логон-логоф скрипта, которые запускаются групповой политикой на уровне всего домена при входе пользователя в систему, и при выходе из нее соответственно.

ЛОГОН-Вариант



ЛОГОФФ-Вариант



Пояснения по коду наверное не нужны, скрипт элементарен, расскажу лишь про плюсы скрипта которые в моей ситуации значительно перевесили минусы (о которых тоже расскажу).

Плюсы



при таком скрипте достаточно настроить в оснастке AD отображение одного дополнительного столбца (в нашем случае department) и можно будет четко видеть где кто работает в данный момент, когда он туда залогинился, либо если на компьютере никто не работает – то кто на нем работал последним, и когда вышел из системы
Не привлекается никакого стороннего ПО, нагрузка на систему (время входа пользователя) увеличивается очень незначительно
Легко и наглядно отслеживается наличие старых объектов компьютеров-пользователей в AD (по дате последнего логина)
Данные централизованно хранятся в AD и не нужно никакого дополнительного хранилища (файла, папки, БД и т.п.). Данные дублируются в объектах Пользователь и Компьютер, т.е. можно отследить ситуацию «дважды под одним и тем же вошел на разных компьютерах».
Выбраны наименее используемые (у нас и у всех тех организаций, с которыми я работал) ОБЩИЕ для объектов пользователь и компьютер поля AD. Это плюс, потому что если бы поля были разными – то пришлось бы добавлять отображение лишних столбцов в оснастке AD
Легко корректировать скрипт по своему усмотрению (выбирать другие поля для хранения данных, писать дополнительно в текстовый файл, исключать из обработки отдельных пользователей или компьютеры (например терминальные сервера), и т.д.)


Минусы



НЕ ХРАНИТСЯ история входов, т.е. записано только текущее состояние. Если история входов нужна, то временно можно добавив несколько строк кода писать информацию еще и в сетевой файл, а если нужна постоянно – то лучше подумать о другом методе учета.
Требуется выдать дополнительное разрешение Write\Modify на поле Description объектов Компьютер и Пользователь в AD для всех доменных пользователей. Минус в моей ситуации сомнительный, но и отрицать его не буду – он есть.

@темы: ad, windows, logon

# Перед тем как сравнивать файлы их нужно отсортировать

sort -o acl_porn.srt acl_porn

sort -o acl_porn2.srt acl_porn2


# Затем удалить дубликаты (повторяющиеся строки)

cat acl_porn.srt |sed '$!N; /^\(.*\)\n\1$/!P; D'>acl_porn

cat acl_porn2.srt |sed '$!N; /^\(.*\)\n\1$/!P; D'>acl_porn2


# Сравниваем. На выходе имеем список одинаковых строк

comm -12 acl_porn acl_porn2

# Удаляем промежуточные файлы

rm acl_porn.srt acl_porn2.srt


@темы: comm, sort, sed

cat /etc/udev/rules.d/70-my-network.rules
# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="90:e6:ba:ce:c4:65", NAME="eth0"

# USB device 0x07d1:0x3c0a (usb)
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="14:d6:4d:a6:4a:88", NAME="wlan0"

@темы: udev

/etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true


sudo update-grub

@темы: boot, Линукс, grub

Установка

Сервер 192.168.1.125

sudo apt-get install munin munin-plugins-extra


Клиент 192.168.1.102

sudo apt-get install munin-node munin-plugins-extra

Настройка

Сервер

chmod -R a+w /var/log/munin # без этого не работает zoom

/etc/munin/conf.d/node




Клиент

/etc/munin/munin-node.conf

host_name comp.localdomain

allow ^192\.168\.1\.125$ # ip сервера



Установка плагинов

ln -s /usr/share/munin/plugins/PLUGIN /etc/munin/plugins/

cd /etc/munin/plugins

munin-run PLUGIN

munin-run PLUGIN config

/etc/init.d/munin-node restart


через 5-15 минут появятся данные плагина (чтоб узнать в какой категории - ищем что написано в плагине после graph_category )

@темы: monitoring, munin, server