вторник, 26 ноября 2013 г.

просмотр ip-адресов компьютеров в локальной сети

Чтобы вывести список ip-адресов компьютеров в локальной сети, можно выполнить команду:

$nmap -sP 192.168.0.1-255

возможно придется предварительно установить nmap

четверг, 19 сентября 2013 г.

Команды редактора VI

VI - текстовый редактор - кошмар для случайного пользователя. Если его удается в конце-концов закрыть, то вздыхаешь с облегчением и твердой уверенностью, что больше не будешь запускать эту программу ни в коем случае.

Действительно, такой редактор нельзя просто открыть и начать работать требуется предварительная подготовка. Зато стоит раз испытать его в работе, и поражаешься, как мог обходиться без него раньше.

Консольные системы Unix не имеют в своем базовом комплекте ни одного нормального (еще раз подчеркну это слово - НОРМАЛЬНОГО) текстового редактора.

Поэтому системный администратор должен уметь пользоваться тем, что ему дают. А дают ему несравненный "Визуальный" экранный редактор файлов - Редактор VI.


Для работы, обычно достаточно знать всего несколько команд. Обычно для работы хватает таких:

vi /file_folder/filename - открыть файл в редакторе vi
vi /file_folder/filename ++25 - открыть файл в редакторе vi и перейти к строке 25.

i - включить режим внесения изменений
[Esc] - выйти из данного режима

u - undo (отмена сделанного изменения)
CTRL + R - redo (вернуть сделанное изменение)

:w [Enter] - сохранить внесенные изменения.

:q! [Enter] - выйти без сохранения изменений
:wq [Enter] - сохранить внесенные изменения и выйти.

dd - удалет строку на которой находится курсор
x - удалет символ на котором находится курсов


[y] - копирует строку в буфер
[P] - вставляет скопированную строку после той, на которой в текущий момент находится курсор


Поиск:

/text [Enter] - выполняет поиск "text" в тексте


Автозамена:

:%s/6201/6202/gc - ищет в документе вхождение 6201 и меняет (с подтверждением) на 6202 (замена порта).


Показать/Скрыть номера строк в редакторе vi:

:set nu - нумеровать строки
:set nonu - не нумеровать строки



!!!Чтобы редактор сохранил настройки, необходимо в файле ~/.vimrc
прописать строку, например set nu





Код взят на каком-то из девелоперских серверов. Допиливаем VI под себя:

vi ~/.vimrc

Достаточно удобно по F2 сохранять результат, а по F10 выходить.

1 set nocompatible
2
3 colorscheme desert
4
5 set novisualbell
6
7 set nu
8
9 set termencoding=utf-8
10
11 set hidden
12
13 set ch=1
14 set showcmd
15
16 syntax on
17
18 set autoindent
19 set smartindent
20
21 nmap <F2> :w<cr>
22 vmap <F2> <esc>:w<cr>i
23 imap <F2> <esc>:w<cr>i<right>
24
25 imap <Ins> <Esc>i
26
27 map <F10> :q!<cr>
28 vmap <F10> <esc>:q!<cr>
29 imap <F10> <esc>:q!<cr>

четверг, 12 сентября 2013 г.

Настройка разрешения экрана для видеокарт Intel 82945G/GZ в Ubuntu


Итак, сабж... Собственно, зачем это нужно?! Должно же из коробки работать. Работало... Но, в один прекрасный момент, по каким-то загадочным причинам перестало, есть такой глючок у интеловских видух. Т.е. в настойках можно установить только разрешение 800х600, что есть грустно.
Честно скажу, логи читать было лень, ибо возвращается все назад очень нехитрыми манипуляциями.


Генерируем интересующий нас Modeline:
#cvt 1280 1024 75

выхолп:

1280x1024 74.90 Hz (CVT 1.31M4) hsync: 80.30 kHz; pclk: 138.75 MHz
Modeline "1280x1024_75.00"  138.75  1280 1368 1504 1728  1024 1027 1034 1072 -hsync +vsync


Смотрим текущие настройки экрана:
#xrandr

выхлоп:

Screen 0: minimum 320 x 200, current 800 x 600, maximum 800 x 600
VGA1 connected 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
800x600        60.3     56.2
640x480        59.9     59.9

Выставляем интересующее нас разрешение:
#export DISPLAY=:0
#xrandr --newmode "1280x1024_75.00"  138.75  1280 1368 1504 1728  1024 1027 1034 1072 -hsync +vsync
#xrandr --addmode VGA1 1280x1024_75.00
#xrandr --output VGA1 --mode 1280x1024_75.00

Примечание!!! В качестве параметров необходимо использовать "modeline", полученный в шаге 1 и VGA1, как видно из шага 2, ибо они специфичны для каждого компутера...

Создаем чистый конфиг Xorg`a, бекапим (если есть) текущий его конфиг и подкидываем новый:
#Xorg -configure
#/etc/init.d/gdm stop
#cp /etc/X11/xorg.conf /etc/X11/xorg.conf.origin
#cp ~/xorg.conf.new /etc/X11/xorg.conf

Приводим секцию "Monitor" к такому виду:
#mcedit /etc/X11/xorg.conf

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
Modeline     "1280x1024_75.00"  138.75  1280 1368 1504 1728  1024 1027 1034 1072 -hsync +vsync
Option       "PreferredMode" "1280x1024_75.00"
EndSection

Рестартим Xorg (или ребутим машину).

 Done.

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

Организация RDP-сервера на базе Debian/Ubuntu

Итак, собсна, сабж...

Огромнейшее спасибо Kevin Cave за труды! Его скрипт очень автоматизирует установку и настройку RDP-сервера на базе Debian/Ubuntu.
Далее предлагаю вольный перевод статьи (оригинала) для тех, кто не очень дружит с буржуйским...

Качаем мега-скрипт:

$sudo apt-get install -y git
$git clone https://github.com/scarygliders/X11RDP-o-Matic.git
$cd X11RDP-o-Matic

Данный скрипт скачивает, собирает и устанавливает пакеты xrdp_0.7.0-1_<arch>.deb и x11rdp_0.7.0-1_<arch>.deb 

Запускаем инсталятор:

$sudo ./X11rdp-o-matic.sh --justdoit

!В случае ошибок сборки, докачиваем необходимые пакеты и запускаем инсталятор снова!

Параметры запуска скрипта:

--help : показать справку.

--justdoit : произвести полную компиляцию и установку всех пакетов по-умолчанию,
без вмешательства пользователя (Рекомендуется).

--nocpuoptimize : не изменять скрипт компиляции X11rdp для использования
более одного ядра процессора (если установлена, для сборки используется только одно ядро,
в противном случае - все доступные ядра процессора будут задействованы).

--nocleanup : не удалять исходники X11rdp / xrdp после установки (по-умолчанию удаляются).

--noinstall : не выполнять установку необходимых пакетов, а просто собрать их.

--nox11rdp  : собрать только xrdp, без "обертки" x11rdp (не рекомнедую, в связки очень достойно работают).

--bleeding-edge : использовать нестабильные репозитории исходных кодов.

Запускаем скрипт настройки клиентов:

$sudo ./RDPsesconfig

RDP-сервер готов!!! Для подключения, в принципе, можно использовать любой клиент с поддержкой RDPv5. Я рекомендую: Remmina (кроссплатформенный), KRDC

Стандартные виндузятные клиенты тоже подходят...

пятница, 30 августа 2013 г.

Настройка подключения через proxy в Ubuntu 12.04

Для работы через прокси-сервер в ubuntu 12.04 и выше нужно поправить 2 конфига:

Правим переменные окружения:
$sudo mcedit /etc/environment

Добавляем настройки на прокси в формате:

http_proxy="http://username:password@proxy:port/"
https_proxy="https://username:password@proxy:port/"
ftp_proxy="ftp://username:password@proxy:port/"
ftps_proxy="ftp://username:password@proxy:port/"

Например
http_proxy="http://192.168.10.2:8080/"
https_proxy="https://192.168.10.2:8080/"

Правим конфиг APT:

$sudo mcedit /etc/apt/apt.conf

Добавляем или изменяем следующие строчки, в формате по аналогии с окружением

Acquire::http::Proxy "http://username:password@proxy:port/";
Acquire::https::Proxy "http://username:password@proxy:port/";
Acquire::ftp::Proxy "http://username:password@proxy:port/";
Acquire::ftps::Proxy "http://username:password@proxy:port/";

Для исключения использования прокси-сервера в отношении каких-либо адресов/подсетей в environment добавляем:

no_proxy=localhost,127.0.0.1,192.168.10.0/24,www.exemple.com

Ребут.

пятница, 19 апреля 2013 г.

Описание таблиц SQL для 1С V8.x

Данное описание таблиц применимо к с следующим СУБД:
  • Microsoft SQL Server (клиент-серверный вариант информационной базы).
  • PostgreSQL (клиент-серверный вариант информационной базы).
  • IBM DB2  (клиент-серверный вариант информационной базы)
Основные таблицы:

Название таблицыОписание
Config Основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.х в режиме Предприятия
ConfigSaveКонфигурация, редактируемая Конфигуратором.
Не сама основная конфигурация, а только отличия ее от конфигурации БД (т.е. только измененные объекты). Таким образом, если конфигурации базы данных и основная конфигурация совпадают, то таблица ConfigSave пустая. Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе
FilesСодержит служебную информацию, например, о работе с хранилищем конфигурации
Params
Содержит параметры информационной базы. Среди них:
  • Список пользователей информационной базы. 
  • Национальные настройки информационной базы. 
  • Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов). 
_YearOffsetСмещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server
DBSchemaСодержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой


Таблицы планов обмена, с установленным флагом "Распределенная информационная база":

Название таблицыОписание
_ConfigChangeRec Таблица регистрации изменений объектов конфигурации
_ConfigChangeRec_ExtPropsТаблица имен файлов измененных внешних свойств объектов конфигурации


Таблицы метаданных:

Название таблицыОписание
_Consts Константы.Содержит текущие значения всех констант, определенных в конфигурации
_ConstsChangeRecКонстанты. Таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена.
_Node<n> Планы обмена. Таблица плана обмена
_Node<n>_VT<k> Планы обмена. Табличная часть плана обмена, создается для каждой табличной части
_Reference<n> Справочники. Таблица справочника
_Reference<n>_VT<k> Справочники. Табличная часть справочника - для каждой табличной части
_ReferenceChangeRec<n> Справочники. Таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена.
_Document<n> Документы. Таблица документов для каждого объекта метаданных "документ".
_Document<n>_VT<k> Документы. Табличная часть документа - для каждой табличной части каждого документа.
_DocumentChangeRec<n> Документы. Таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена.
_Sequence<n> Последовательности документов. Таблица регистрации документов - для каждой последовательности.
_SequenceBoundary<n> Последовательности документов. Таблица границ последовательности - для каждой последовательности.
_SequenceChangeRec<n> Последовательности документов. Таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена.
_DocumentJournal<n> Журналы документов. Таблица журнала документов, создается для каждого журнала документов.
_Enum<n> Перечисления. Таблица перечисления - по одной для каждого перечисления. 
_Chrc<n> Планы видов характеристик. Основная таблица плана видов характеристик.
_Chrc<n>_VT<k> Планы видов характеристик. Табличная часть плана видов характеристик - для каждой табличной части.
_ChrcChangeRec<n> Планы видов характеристик. Таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена.
_Acc<n> Планы счетов. Основная таблица плана счетов.
_Acc<n>_ExtDim<k> Планы счетов. Таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля.
_Acc<n>_VT<k> Планы счетов. Табличная часть плана счетов, создается для каждой табличной части плана счетов. 
_AccChangeRec<n> Планы счетов. Таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена. 
_CalcKind<n> Планы видов расчета. Основная таблица плана видов расчета.
_CalcKind<n>_BaseCK Планы видов расчета. Таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство "Зависимость от базы" имеет значение, отличное от "Не зависит".
_CalcKind<n>_DisplacedCK Планы видов расчета. Таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг "Использует период действия". 
_CalcKind<n>_LeadingCK Планы видов расчета. Таблица ведущих видов расчета - для каждого плана видов расчета.
_CalcKindDN<n> Планы видов расчета. Вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг "Использует период действия". 
_CalcKind<n>_VT<k> Планы видов расчета. Табличная часть плана видов расчета, создается для каждой табличной части.
_CalcKindChangeRec<n> Планы видов расчета. Таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена. 
_InfoReg<n> Регистры сведений. Таблица движений регистра сведений.
_InfoRegChangeRec<n> Регистры сведений. Таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена.
_AccumReg<n> Регистры накопления. Таблица движений регистра накопления.
_AccumRegTotals<n> Регистры накопления. Таблица итогов регистра накопления, если регистр поддерживает остатки.
_AccumRegTurnovers<n> Регистры накопления. Таблица оборотов регистра накопления, если регистр поддерживает обороты. 
_AccumRegChangeRec<n> Регистры накопления. Таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена.
_AccumRegOptions Регистры накопления. Таблица настроек хранения итогов регистров накопления одна на все регистры накопления. 
_AccntReg<n> Регистры бухгалтерии. Таблица движений регистра бухгалтерии
_AccntRegED<n> Регистры бухгалтерии. Таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля.
_AccTtl0<n> Регистры бухгалтерии. Таблица итогов по счету.
_AccTtl<i><n> Регистры бухгалтерии. Таблица итогов по счету с количеством видов субконто равным i, где i от 1 до максимального количества субконто. 
_AccTtlC<n> Регистры бухгалтерии. Таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию. 
_AccntRegChangeRec<n> Регистры бухгалтерии. Таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена. 
_AccntRegOptions Регистры бухгалтерии. Таблица настроек хранения итогов одна на все регистры бухгалтерии.
_CalcReg<n> Регистры расчета. Таблица движений регистра расчета.
_CalcRegActPer<n> Регистры расчета. Таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг "Период действия".
_CalcRegChangeRec<n> Регистры расчета. Таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена.
_CalcRegRecalc<n> Регистры расчета. Таблица перерасчета регистра расчета, создается для каждого перерасчета.
_CalcRegRecalcChangeRec<n> Регистры расчета. Таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена.
_BPRoutePoint<n> Бизнес-процессы. Таблица точек маршрута бизнес-процесса для каждого бизнес-процесса.
_BusinessProcess<n> Бизнес-процессы. Основная таблица бизнес-процесса. 
_BusinessProcess<n>_VT<k> Бизнес-процессы. Табличная часть бизнес-процесса для каждой табличной части.
_BusinessProcessChangeRec<n> Бизнес-процессы. Таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена.
_Task<n> Задачи. Основная таблица задачи.
_Task<n>_VT<k> Задачи. Табличная часть задачи для каждой табличной части.
_TaskChangeRec<n> Задачи. Таблица регистрации изменений в задачах. Создается для каждого объекта метаданных типа "задача", который участвует хотя бы в одном плане обмена. 


Структуру и название таблиц используемых для хранения данных в БД 1С 8.х можно посмотреть, выполнив следующий код на встроенном языке 1С:

 МассивИменМетаданных = Новый Массив();
 МассивИменМетаданных.Добавить("Справочник.Номенклатура");

 // Таблица значений, содержащая таблицы указанного объекта.
 Таблицы = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
 Построитель = Новый ПостроительОтчета;
 Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Таблицы);
 Построитель.ЗаполнитьНастройки();
 Построитель.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1);
 Обновить();
 
 //Для Каждого Таблица Из Таблицы Цикл
 // ПоляТаблицы = Таблица.Поля;
 // Для Каждого Поле Из ПоляТаблицы Цикл
 //  // Просмотр свойств таблицы.
 // КонецЦикла; 

 // ИндексыТаблицы = Таблица.Индексы;
 // Для Каждого Индекс Из ИндексыТаблицы Цикл
 //  // Просмотр свойств индекса.
 // КонецЦикла;   
 //КонецЦикла;    

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

Сканируем документы по сети. Или как расшарить сканер в Ubuntu?

Задача:
Организовать возможность сканировать документы по локальной сети.

Имеем:
Копутеры в разных подсетях (192.168.1.0/24, 192.168.2.0/24, 192.168.10.0/24) и МФУ Canon MF4010, подключенный по USB к 192.168.1.6

Обозначения:
scanserver - компьютер, к которому подключен сканер;
scanclient - компьютер, к которого необходимо сканировать по сети;


На scanserver:

Ставим недостающие пакеты:
$sudo apt-get install sane-utils

Правим конфиги:

$sudo mcedit /etc/sane.d/saned.conf

в самый конец файла добавляем IP-адрес scanclient 
(Если клиентов несколько, то можно указать диапозон IP-адресов (например, 192.168.1.1-192.168.1.4)
 или всю подсеть (например, 192.168.1.0/24))

192.168.1.0/24
192.168.2.0/24
192.168.10.0/24

$sudo mcedit /etc/inetd.conf

добавляем в него строку:
sane-port stream tcp nowait saned:saned /usr/sbin/saned saned

(если такая строка есть, но закомментирована - соответственно раскомментировать ее)


Рестартуем openbsd-inetd:
$sudo service openbsd-inetd restart


Если в системе еще нет группы scanner - создаем ее, и добавляем себя и пользователя saned в эту группу:
$sudo groupadd scanner
$sudo usermod -aG scanner user
$sudo usermod -aG scanner saned

Правим конфиг 40-libsane.rules:
$sudo mcedit /lib/udev/rules.d/40-libsane.rules

ищем свой сканер, должно быть что то типа:

# Canon imageCLASS MF4010 | Canon imageCLASS MF4018
ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="26b4", ENV{libsane_matched}="yes"

приводим строку к такому виду:

# Canon imageCLASS MF4010 | Canon imageCLASS MF4018
ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="26b4", ENV{libsane_matched}="yes", MODE="664", GROUP="scanner"


Если вашего сканера нет в файле, его можно добавить вручную по idVendor и idProduct, которые можно получить командой на scanserver:
$sane-find-scanner

в ответ должно быть что тот типа:
found USB scanner (vendor=0x04a9 [Canon Inc.], product=0x26b4 [MF4010]) at libusb:001:003

Теперь правим /etc/default/saned:
$sudo mcedit /etc/default/saned

устанавливаем RUN=yes

Рестартуем saned:
$sudo service saned restart

На этом настройка scanserver-a завершена...


На scanclient:

Ставим недостающие пакеты:
$sudo apt-get install sane-utils

Правим конфиг:

$sudo mcedit /etc/sane.d/net.conf

в самый конец файла добавляем IP-адрес scanserver
192.168.1.6 

Проверяем доступность сканера:
$sudo scanimage -Lq

В ответ должны получить что-то вроде:
device `net:192.168.1.6:pixma:04A926B4_SD3008250258Q' is a CANON Canon imageCLASS MF4010 multi-function peripheral

В конфиге /etc/sane.d/dll.conf проверяем наличие строки (раскаментируем/добовляем):
net


Если в системе еще нет группы scanner - создаем ее, и добавляем себя и пользователя saned в эту группу:
$sudo groupadd scanner
$sudo usermod -aG scanner user
$sudo usermod -aG scanner saned

На этом ВСЕ!!! Можно пробовать сканировать с помощью XSane или другой подходящей программой, используя расшаренный сканер.


ЗАМЕЧАНИЕ!!!
Если после настройки есть ругань на ограничение правах использования сканера, то на scanserver в конфиге /etc/inetd.conf следует заменить строку параметров:

sane-port stream tcp nowait saned:saned /usr/sbin/saned saned
заменить на:
sane-port stream tcp nowait root /usr/sbin/saned saned