воскресенье, 24 июля 2016 г.

Смена экрана для MDM на Mint

Если не получается сменить основной экран для MDM в стандартном GUI интерфейсе (у меня не было в списке мониторов пунктов), то можно сделать следующее.
Для начала узнать название монитора
xrandr
...
HDMI-0 connected 1920x1080+1920+0 (normal...
   1920x1080     60.0...
   1920x1080i    60.0...
...
DVI-0 connected primary 1920x1080+0+0 (normal...
   1920x1080     60.00*+
   1680x1050     59.88 
...
Затем добавить в 
/etc/mdm/Init/Default
следующий код

mode="$(xrandr -q|grep -A1 "DVI-0 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
  xrandr --output HDMI-0 --off
  xrandr --output DVI-0 --primary --mode 1920x1080
fi

вторник, 26 апреля 2016 г.

Авторизация по LDAP в Ruby с использованием net-ldap

Столкнулся с необходимостью авторизоваться через LDAP.

Первое:
Нужно установить gem который это умеет делать, в моем случае это net-ldap.

Второе:
Для авторизации через LDAP нужен не логин, как я думал и что стало для меня неожиданностью, а Distinguished Name. Поэтому сначала необходимо его найти в LDAP по логину, а потом уже авторизоваться с его помощью и пароля.

Маленький пример:

require 'net/ldap'

  def ldap_search(ldap, login)
    filter = Net::LDAP::Filter.eq("uid", login)
    ldap.search(filter: filter ) do |entry|
      return entry.dn
    end
    ldap_response(ldap)
  end

  def ldap_auth(login, password)
    ldap = Net::LDAP.new
    ldap.host = ""
    ldap.port = 389
    ldap.base = "dc=company,dc=ru"
    dn = ldap_search(ldap, login) or return false
    ldap.auth(dn, password)
    ldap.bind or ldap_response(ldap)
  end
  
  def ldap_response(ldap)
    unless ldap.get_operation_result.code == 0
      puts "LDAP ERROR Code: #{ldap.get_operation_result.code}, Message: #{ldap.get_operation_result.message}"
      return false
    end
  end

Как перезагрузить сервер

Наткнулся на классную статью: https://habrahabr.ru/post/98770/

Почерпнул несколько методов перезагрузки Linux:

  1. reboot - при нормальной работе
  2. reboot -f - при проблемах с софтом
  3. echo b > /proc/sysrq-trigger - при проблемах с ядром или примонтированными дисками или libc
  4. ipt_SYSRQ - при проблемах с ядром или примонтированными дисками или libc и при этом нет открытой консоли (надо подготовить заранее)
  5. ipmitool chassis power cycle - при проблемах с ядром или железом
  6. ipmitool -H ipmi.server.local chassis power cycle - при проблемах с ядром или железом без открытой консоли

понедельник, 29 июня 2015 г.

Ошибка: "уже сопоставлен в рабочей области"

В Visual Studio при сопоставлении проекта из Team Foundation с локальной папкой может появится ошибка "уже сопоставлен в рабочей области".

Исправление:
Делается из консоли с помощью команды "tf". Если команды нет, то нужно добавить путь в системную переменную "Path"
C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

Пишут что достаточно выполнить:
C:\PathToWorkspaceFolder>tf workspaces /remove:*

Не помогло

Смотрим зарегистрированные рабочие области
C:\PathToWorkspaceFolder>tf workspaces /owner:*

И удалям ту область которая нам мешает
C:\PathToWorkspaceFolder>tf workspace /delete /server:http://tfs-server:8080/tfs workspace;owner

вторник, 2 июня 2015 г.

Не работают стрелки в IRB

Если стрелки работают в IRB не правильно, то скорее всего не установлен readline

yum install readline readline-devel

понедельник, 11 мая 2015 г.

Большая папка в Windows

Анализировал тут место на системном диске и наткнулся на папку размером 5 гигов:
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Media Player\Кэш файлов графики\LocalMLS\

Так как Media Player у меня не в почете, но решил отключить:
Остановил и отключил сервис - "Служба общих сетевых ресурсов проигрывателя Windows Media"
Почистил папку

среда, 6 мая 2015 г.

Скачать favicon с сата

Просто перейти по ссылке:
http://favicon.yandex.net/favicon/<адрес сайта>

Конечно можно покопаться в коде страницы и найти ссылку на иконку типа:
<link href="http://azmleh.blogspot.ru/favicon.ico" rel="icon" type="image/x-icon"></link>

Но это несколько сложнее и иконки получаешь разных размеров и форматов.

вторник, 24 марта 2015 г.

Перенос пользователей Mysql

на сервере с которого нужно перенести пользователей создаем хранимую процедуру:
CREATE DEFINER=`alexk`@`%` PROCEDURE `showGrants`()
  LANGUAGE SQL
  NOT DETERMINISTIC
  CONTAINS SQL
  SQL SECURITY DEFINER
  COMMENT ''
BEGIN
  DECLARE v VARCHAR(64) CHARACTER SET utf8;
  DECLARE c CURSOR FOR
  SELECT DISTINCT CONCAT(
  'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
  ) AS query FROM mysql.user;
  DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
  OPEN c;
  WHILE TRUE DO
  FETCH c INTO v;
  SET @v = v;
  PREPARE stmt FROM @v;
  EXECUTE stmt;
  END WHILE;
  CLOSE c;
END

после чего выполняем её в консоли и записываем в файл:
mysql -h <host> -u <user> -b <db> -p -e "call showGrants" > grants

И подготавливаем файл для выполнения в mysql:
cat grants | awk '{if ($1 != "Grants") print $0,";"}' > grants

Заливаем в базу:
cat grants | mysql -h <host> -u <user> -p

Добавление Mysql-slave сервера в репликацию

На мастер сервере

В конфиге (/etc/my.cnf) прописываем, в секции [mysqld]:
log-bin
binlog_format=mixed
server-id = 1

Перезагружаем mysql:
service mysqld restart

Дальше подключаемся к mysql:
mysql -h <master-server> -b <database> -u <user> -p

Заводим пользователя под которым будет подключаться slave:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'<slave-server>' IDENTIFIED BY 'password';

Запрещаем запись в таблицы:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

Смотрим текущий файл и позицию binlog`а:
SHOW MASTER STATUS \G
Запоминаем их.

Заходим в другую консоль и делаем дамп базы:
mysqldump --databases <database> --opt  > <dump_filename>

Возвращаемся в предыдущую консоль и включаем обратно запись в базу:
SET GLOBAL read_only = OFF; 
Можно отключаться.

Копируем дамп на вторичный сервер:
scp <dump_filename> <slave-server>:<dump_filename>

На slave-сервере

В конфиге (/etc/my.cnf) прописываем, в секции [mysqld]:
log-bin 
server-id       = 2 
master-host     = <master-server> 
master-user     = repl 
master-password = password

Перезагружаем mysql:
service mysqld restart

Подключаемся к mysql:
mysql -h <slave-server> -b <database> -u <user> -p

Заводим пользователя для репликации:
GRANT REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';

В другой консоли восстанавливаем базу из дампа:
cat <dump_filename> | mysql -h <slave-server> -u <user> -p

Возвращаемся в консоль с подключенным mysql, и останавливаем slave:
SLAVE STOP;

Прописываем текущую позицию binlog`а подсмотренную на мастер-сервере:
CHANGE MASTER TO MASTER_HOST = "<master-server>", MASTER_USER = "repl", MASTER_PASSWORD = "password", MASTER_LOG_FILE = "<binlog_filename>", MASTER_LOG_POS = <binlog_position>;

Стартуем slave: SLAVE START;

И проверяем заработала ли репликация: SHOW SLAVE STATUS \G

Всё.

P.S. Копировать пользователей нужно отдельно.

понедельник, 23 марта 2015 г.

Windows 7 вернуть Quick Launch

"Создать панель инструментов..."
Путь:
%APPDATA%\Microsoft\Internet Explorer\Quick Launch