+38 (067) 901-63-22

Корзина

0 товара(ов) на сумму
0 грн.

Июнь 2015 — К2®, Рудюк Сергей Анатольевич

Команда NSLOOKUP - работа с сервером DNS из командной строки

Утилита NSLOOKUP присутствует в операционных системах Windows, начиная с Windows NT , и предназначена для формирования запросов к серверам DNS из командной строки. Фактически, утилита является аналогом службы DNS-клиент и позволяет диагностировать проблемы с разрешением имен в системе DNS. По умолчанию, все запросы отправляются на DNS-сервер, адрес которого задан настройками сетевого подключения. В терминах утилиты такой сервер является сервером по умолчанию (default server). Команда ipconfig /all позволяет получить информацию о настройках протокола IP и, в том числе, о серверах DNS, используемых в системе.

При запуске nslookup без параметров, утилита переходит в интерактивный режим, ожидая ввод команд пользователя. Ввод знака вопроса или help позволяет отобразить справку о внутренних командах и опциях nslookup:

Команды: (идентификаторы отображаются в верхнем регистре, квадратные скобки "[]" обозначают необязательные параметры) <b>NAME</b> - печать сведений об узле или домене NAME с помощью сервера по у молчанию <b>NAME1 NAME2</b> - та же операция, но в качестве сервера используется NAME2 <b>help или ? </b> - печать сведений о стандартных командах <b>set OPTION</b> - установить параметр <b> all</b> - печать параметров, текущего сервера и узла <b> [no]debug</b> - печать отладочных сведений <b> [no]d2</b> - печать полных отладочных сведений <b> [no]defname</b> - добавить имя домена ко всем запросам <b> [no]recurse</b> - запрос рекурсивного ответа на запрос <b> [no]search</b> - использовать список поиска доменов <b> [no]vc</b> - всегда использовать виртуальную схему <b> domain=NAME</b> - установить имя домена по умолчанию NAME <b> srchlist=N1[/N2/.../N6] </b> - установить домен N1 и список поиска N1,N2 и т.д. <b> root=NAME</b> - установить корневой сервер NAME <b> retry=X </b> - установить число повторов X <b> timeout=X </b> - установить интервал времени ожидания в X секунд <b> type=X</b> - установить тип запроса (пр. A,AAAA,A+AAAA,ANY,CNAME,MX ,NS,PTR,SOA,SRV) <b> querytype=X</b> - то же, что и type <b> class=X</b> - установить класс запроса ( IN (Internet), ANY) <b> [no]msxfr</b> - использовать быструю зону MS для передачи <b> ixfrver=X </b> - текущая версия, использующаяся в передаче запросов IXFR <b>server NAME</b> - установить сервер по умолчанию NAME, используя текущий сервер по умолчанию <b>lserver NAME</b> - установить сервер по умолчанию NAME, используя первоначальный сервер <b>root</b> - сделать текущий сервер по умолчанию корневым сервером <b>ls [opt] DOMAIN [> FILE] </b> - перечисление адресов в домене DOMAIN (необязательно: вывод в файл FILE) <b> -a</b> - перечисление канонических имен и псевдонимов <b> -d</b> - перечисление всех записей <b> -t TYPE</b> - перечисление записей указанного типа RFC (пр. A,CNAME,MX,NS,P TR etc.) <b>view FILE</b> - сортировка файла "ls" и его просмотр с помощью pg <b>exit</b> - выход из программы

При запуске с некоторыми из параметров, команда nslookup выполняется в не интерактивном режиме без диалога с пользователем:

nslookup yandex.ru. - выполнить запрос к DNS-серверу, заданному по умолчанию, на разрешение доменного имени yandex.ru . Для уменьшения ненужных запросов к серверам имен имя домена нужно вводить в випе полностью определенного (fully qualified domain name) , т.е. с точкой в конце. Если этого не делать, то nslookup будет сначала выполнять запрос на разрешение имени относительно домена того компьютера, на котором она выполняется т.е. yandex.ru.mydomain.ru если имя локальнлгл домена mydomain.ru.

nslookup odnoklassniki.ru 8.8.8.8 - определить IP-адрес узла odnokassniki.ru с использованием DNS-сервера 8.8.8.8 (публичный DNS-сервер Google).

nslookup -type=mx -timeout=8 vk.com 208.67.220.220 - отобразить запись MX для домена vk.com из базы данных сервера с IP-адресом 208.67.220.220 (сервер OpenDNS). При выполнении команды, максимальное время ожидания ответа сервера - 8 секунд.

nslookup -type=any -timeout=8 vk.com 208.67.220.220 - то же, что и в предыдущем примере, но для любых типов записей.

Пример отображаемых данных:


Сервер: 208.67.220.220 Не заслуживающий доверия ответ: vk.com internet address = 87.240.131.119 vk.com internet address = 87.240.131.99 vk.com nameserver = ns2.vkontakte.ru vk.com nameserver = ns4.vkontakte.ru vk.com nameserver = ns1.vkontakte.ru vk.com nameserver = ns4.vkontakte.ru vk.com nameserver = ns2.vkontakte.ru vk.com nameserver = ns1.vkontakte.ru ns1.vkontakte.ru internet address = 93.186.237.2 ns2.vkontakte.ru internet address = 93.186.224.100

Для разных версий nslookup и разных DNS-серверов, обслуживающих запрос, отображаемая информация может отличаться. Тот же запрос, сформированный англоязычной nslookup и направленный на обработку DNS-серверу Google прведет к отображению следующих данных:


Address: 8.8.8.8 Non-authoritative answer: vk.com internet address = 87.240.131.120 vk.com internet address = 87.240.143.244 vk.com primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903 vk.com nameserver = ns1.vkontakte.ru vk.com nameserver = ns2.vkontakte.ru vk.com nameserver = ns4.vkontakte.ru vk.com MX preference = 10, mail exchanger = mail.vk.com vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all"

Сообщение "Не заслуживающий доверия ответ:" (Non-authoritative answer: ) говорит о том, что выполняющий запрос DNS-сервер, не является владельцем зоны vk.com т.е. записи для узла vk.com в его базе отсутствуют, и для разрешения имени использовался рекурсивный запрос к другому DNS-серверу. Если отправить запрос DNS-серверу ns1.vkontakte.ru, то будет получен авторитетный ответ (authoritative answer) :


Server: ns1.vkontakte.ru Address: 93.186.237.2 vk.com primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) vk.com internet address = 87.240.131.118 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:904 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:905 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:906 vk.com nameserver = ns4.vkontakte.ru vk.com nameserver = ns1.vkontakte.ru vk.com nameserver = ns2.vkontakte.ru vk.com MX preference = 10, mail exchanger = mail.vk.com vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all" ns4.vkontakte.ru internet address = 93.186.239.253 ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2 ns1.vkontakte.ru internet address = 93.186.237.2 ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2 ns2.vkontakte.ru internet address = 93.186.224.100 ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2 mail.vk.com internet address = 93.186.236.94


Использование опции отладки (debug) позволяет получить дополнительную информацию, содержащуюся в заголовках запросов клиента и ответов сервера (время жизни, флажки, типы записей и т.п.):

> server ns1.vkontakte.ru ------------ Got answer: HEADER: opcode = QUERY, id = 5, rcode = NXDOMAIN header flags: response, want recursion, recursion avail. questions = 1, answers = 0, authority records = 1, additional = 0 QUESTIONS: ns1.vkontakte.ru, type = A, class = IN AUTHORITY RECORDS: -> (root) ttl = 440 (7 mins 20 secs) primary name server = a.root-servers.net responsible mail addr = nstld.verisign-grs.com serial = 2013101600 refresh = 1800 (30 mins) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 86400 (1 day) ------------ ------------ Got answer: HEADER: opcode = QUERY, id = 6, rcode = NOERROR header flags: response, want recursion, recursion avail. questions = 1, answers = 1, authority records = 0, additional = 0 QUESTIONS: ns1.vkontakte.ru, type = A, class = IN ANSWERS: -> ns1.vkontakte.ru internet address = 93.186.237.2 ttl = 6350 (1 hour 45 mins 50 secs) ------------ Default Server: ns1.vkontakte.ru Address: 93.186.237.2 > vk.com Server: ns1.vkontakte.ru Address: 93.186.237.2 ------------ Got answer: HEADER: opcode = QUERY, id = 7, rcode = REFUSED header flags: response, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: vk.com, type = ANY, class = IN ------------ ------------ Got answer: HEADER: opcode = QUERY, id = 8, rcode = NOERROR header flags: response, auth. answer, want recursion questions = 1, answers = 11, authority records = 0, additional = 7 QUESTIONS: vk.com, type = ANY, class = IN ANSWERS: -> vk.com ttl = 900 (15 mins) primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) -> vk.com internet address = 87.240.131.99 ttl = 900 (15 mins) -> vk.com internet address = 87.240.131.119 ttl = 900 (15 mins) -> vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901 ttl = 900 (15 mins) -> vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902 ttl = 900 (15 mins) -> vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903 ttl = 900 (15 mins) -> vk.com nameserver = ns1.vkontakte.ru ttl = 900 (15 mins) -> vk.com nameserver = ns2.vkontakte.ru ttl = 900 (15 mins) -> vk.com nameserver = ns4.vkontakte.ru ttl = 900 (15 mins) -> vk.com MX preference = 10, mail exchanger = mail.vk.com ttl = 900 (15 mins) -> vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all" ttl = 900 (15 mins) ADDITIONAL RECORDS: -> ns1.vkontakte.ru internet address = 93.186.237.2 ttl = 9000 (2 hours 30 mins) -> ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2 ttl = 9000 (2 hours 30 mins) -> ns2.vkontakte.ru internet address = 93.186.224.100 ttl = 9000 (2 hours 30 mins) -> ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2 ttl = 9000 (2 hours 30 mins) -> ns4.vkontakte.ru internet address = 93.186.239.253 ttl = 9000 (2 hours 30 mins) -> ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2 ttl = 9000 (2 hours 30 mins) -> mail.vk.com internet address = 93.186.236.94 ttl = 900 (15 mins) ------------ vk.com ttl = 900 (15 mins) primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) vk.com internet address = 87.240.131.99 ttl = 900 (15 mins) vk.com internet address = 87.240.131.119 ttl = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901 ttl = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902 ttl = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903 ttl = 900 (15 mins) vk.com nameserver = ns1.vkontakte.ru ttl = 900 (15 mins) vk.com nameserver = ns2.vkontakte.ru ttl = 900 (15 mins) vk.com nameserver = ns4.vkontakte.ru ttl = 900 (15 mins) vk.com MX preference = 10, mail exchanger = mail.vk.com ttl = 900 (15 mins) vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all" ttl = 900 (15 mins) ns1.vkontakte.ru internet address = 93.186.237.2 ttl = 9000 (2 hours 30 mins) ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2 ttl = 9000 (2 hours 30 mins) ns2.vkontakte.ru internet address = 93.186.224.100 ttl = 9000 (2 hours 30 mins) ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2 ttl = 9000 (2 hours 30 mins) ns4.vkontakte.ru internet address = 93.186.239.253 ttl = 9000 (2 hours 30 mins) ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2 ttl = 9000 (2 hours 30 mins) mail.vk.com internet address = 93.186.236.94 ttl = 900 (15 mins)


nslookup 8.8.4.4 - отобразить имя узла, соответствующее IP-адресу 8.8.4.4

nslookup -ls -d mydomain.ru. > listdns.txt - отобразить все записи для домена mydomain.ru, обслуживаемого текущим DNS-сервером. Вывод направляется в файл listdns.txt текущего каталога. Задавать абсолютный путь к файлу не следует, поскольку все существующие на данный момент версии nslookup.exe успешно перенаправляют стандартный вывод в файл, только если он располагается в текущем каталоге.

При работе в интерактивном режиме, после старта на экран выводится приглашение к вводу команд - символ ">" . При вводе команд необходимо учитывать регистр символов, например, LS -d mydomain.ru. будет воспринята как ошибочна команда, а ls -D mydomain.ru. - как команда с ошибочной опцией.

Источник: http://ab57.ru/cmdlist/nslookup.html

VirtualBox не видит USB в Linux Ubuntu (для Linux Ubuntu 2014 и 2015 года)

VirtualBox и USB, проблема которую мы сейчас будем решать.

Проблема не в связке, а в настройке. :)

Для решения этой задачки нужно соблюсти 3 условия:

1. Установить последний релиз VirtualBox.

2. Добавить пользователя в группу vboxusers.
Работаем в терминале (Ctrl+Shift+T)

1
		
sudo gpasswd --add user vboxusers
		

Где user - это ваш логин, а vboxusers - группа в которую добавляем пользователя.

3. Выйти и зайти в систему Linux.

4. Для VirtualBox поставить дополнение Oracle VM VirtualBox Extension Pack.
Для того, чтобы виртуальная машина могла корректно работать в USB-хостами 2.0.

5. В запущенной гостевой ОС установить Дополнения гостевой ОС.

Вот и всё. Наслаждаемся проделанной работой :)

P.S. Вот помощь на сайте Ubuntu http://help.ubuntu.ru/wiki/virtualbox

Источник: http://tavportal.ru/archives/602

Программирование в командной строке используя PHP

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash'e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.

Проверка прав доступа

Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать
#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.

Прежде всего, нам нужно проверить, есть ли у нас право на запись в ту самую папку, которая содержит в себе конфиги виртуальных хостов, а обычно для этого нужны root права. Проверить это довольно просто:

  1. $virtual_hosts_dir = "/etc/apache2/sites-available/";
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4. echo "You must run this script as root!\n";
  5. exit;
  6. }


Получение информации из параметров

Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к вызываемому скрипту. Таким образом, обработка входящих переменных сводится просто к обработке массива:

  1. if ($argc>1)
  2. {
  3. for ($i=1; $i<$argc; $i++)
  4. {
  5. $option = explode("=", $argv[$i]);
  6. switch ($option[0])
  7. {
  8. case "-h":
  9. case "--add-to-hosts":
  10. $add_to_hosts = true;
  11. break;
  12. case "-n":
  13. case "--no-add-to-hosts":
  14. $add_to_hosts = false;
  15. break;
  16. case "-a":
  17. case "--server-alias":
  18. if (isset($option[1]))
  19. {
  20. $server_alias = $option[1];
  21. }
  22. else
  23. {
  24. echo "Wrong option: {$argv[$i]}\n";
  25. }
  26. break;
  27. case "-d":
  28. case "--document-root":
  29. if (isset($option[1]))
  30. {
  31. if ($option[1] == "default")
  32. {
  33. $document_root = $default_doc_root
  34. }
  35. else if (is_dir(dirname($option[1])))
  36. {
  37. $document_root = $option[1];
  38. }
  39. }
  40. else
  41. {
  42. echo "Wrong option: {$argv[$i]}\n";
  43. }
  44. break;
  45. default:
  46. if (substr($argv[$i], 1, 1) == '-')
  47. {
  48. echo "Unknown option: {$argv[$i]}\n";
  49. }
  50. break;
  51. }
  52. }
  53. }


Потоки ввода\вывода

Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:

  1. $line = fgets(STDIN);

просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:

  1. $stdin = fopen("php://stdin", "r");
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);

В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.

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

  1. while (!$server_alias)
  2. {
  3. echo "Enter your hostname: ";
  4. $server_alias = trim(fgets(STDIN));
  5. }

Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:

  1. if ($add_to_hosts === null)
  2. {
  3. echo "Add $server_alias to your /etc/hosts ? (Y/N) [Y]: ";
  4. $line = trim(fgets(STDIN));
  5. if ($line == 'n' || $line == 'N')
  6. {
  7. $add_to_hosts = false;
  8. }
  9. else
  10. {
  11. $add_to_hosts = true;
  12. }
  13. }

То же самое и с корневой директорией сайта:

  1. if (!$document_root)
  2. {
  3. $default_doc_root = $default_doc_root.'/'.$server_alias;
  4. echo "Enter your document root [$default_doc_root]: ";
  5. $line = trim(fgets(STDIN));
  6. if ($line && is_dir(dirname($line)))
  7. {
  8. $document_root = $line;
  9. }
  10. else
  11. {
  12. $document_root = $default_doc_root;
  13. }
  14. }


Генерация конфиг-файла

На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:

  1. if (!is_dir($document_root))
  2. {
  3. mkdir($document_root);
  4. }

Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:

  1. if ($add_to_hosts)
  2. {
  3. $hosts = file_get_contents("/etc/hosts");
  4. $hosts .= "127.0.0.1\t$server_alias\n";
  5. file_put_contents("/etc/hosts", $hosts);
  6. }

Собственно так выглядит шаблон нашего конфига:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80>
  3. ServerAdmin i@bogus.in
  4. ServerAlias $server_alias
  5. DocumentRoot $document_root
  6. <Directory $document_root>
  7. Options Indexes FollowSymLinks MultiViews
  8. AllowOverride All
  9. Order allow,deny
  10. allow from all
  11. </Directory>
  12. ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log;
  13. LogLevel warn
  14. CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
  15. </VirtualHost>
  16. HOST;

Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:

  1. file_put_contents("/etc/apache2/sites-available/$server_alias", $host_template);
  2. echo "Apache config for this hostname created successfully! Don't forget to run a2ensite $server_alias\n";

Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +x, чтобы его можно было запускать как программу:
chmod +x a2addsite

Использование

Теперь скрипт можно использовать. Можно как вводить всю информацию в консоли:
% sudo ./a2addsite
Add test.local to your /etc/hosts? (Y/N) [Y]:
Enter your document root [/home/www/test.local]:
Apache config for this hostname created successfully! Don't forget to run a2ensite test.local

так передавать всю или часть информации скрипту в качестве параметров при вызове:
% sudo ./a2addsite --server-alias=test2.local --add-to-hosts --document-root=default
Apache config for this hostname created successfully! Don't forget to run a2ensite test2.local

Выводы

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

Литература

Больше информации о потоках ввода вывода, а также о остальных особенностях работы с консолью в PHP можно получить на официальном сайте PHP (англ.):
Command line usage
PHP input/output

Источник: http://habrahabr.ru/post/112146/

Установка Postgresql и указание пароля

PostgreSQL - это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).

Установка

Для установки PostgreSQL выполните следующую команду в терминале:

sudo apt-get install postgresql

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

Настройка

По умолчанию соединения через TCP/IP заблокированы. PostgreSQL поддерживает множество методов аутентификации. Метод аутентификации IDENT используется для postgres и локальных пользователей пока не настроено что-то еще. Обратитесь к PostgreSQL Administrator's Guide, если вы собираетесь использовать какую-либо альтернативу типа Kerberos.

Дальнейшее обсуждение предполагает, что вы собираетесь разрешить соединения по TCP/IP и используете аутентификацию клиентов на основе метода MD5. Файлы настроек PostgreSQL хранятся в каталоге /etc/postgresql/<version>/main. Например, если вы установили PostgreSQL 8.4, файлы настроек сохранятся в каталоге /etc/postgresql/8.4/main.

Для настройки аутентификации ident добавьте записи в файл /etc/postgresql/8.4/main/pg_ident.conf. В файле содержатся подробные комментарии чтобы направлять вас.

Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf. Найдите строку

#listen_addresses = 'localhost'

и замените ее на:

listen_addresses = 'localhost'

Чтобы разрешить другим компьютерам соединяться с вашим PostgreSQL сервером, замените 'localhost' на IP адрес вашего сервера или в качестве альтернативы на 0.0.0.0, чтобы подключить все интерфейсы.

Вы можете также редактировать любые другие параметры, если знаете что вы делаете! Для подробностей смотрите комментарии файла настроек или документацию по PostgreSQL.

Теперь, поскольку мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres. Выполните следующую команду в терминале для соединения со стандартной базой шаблонов PostgreSQL:

sudo -u postgres psql template1

Эта команда подключится к PostgreSQL базе данных template1 как пользователь postgres. После подключения к серверу PostgreSQL вы окажетесь в SQL консоли. Вы можете выполнить следующую SQL команду в консоли psql для настройки пароля пользователя postgres:

ALTER USER postgres with encrypted password 'your_password';

После настройки пароля, измените файл /etc/postgresql/8.4/main/pg_hba.conf на использование MD5 аутентификации для пользователя postgres:

local all postgres md5

Под конец вам потребуется перезапустить сервис PostgreSQL для применения новых настроек. Из терминала выполните следующее для перезапуска PostgreSQL:

sudo /etc/init.d/postgresql-8.4 restart

Настройка выше в любом случае неполная. Пожалуйста обратитесь к руководству PostgreSQL Administrator's Guide для настройки других параметров.

Ссылки

1. Как упоминалось выше, Administrator's Guide - великолепный ресурс. Руководство также доступно из пакета postgresql-doc-8.4. Выполните следующую команду в терминале для установки пакета:

sudo apt-get install postgresql-doc-8.4

Чтобы увидеть руководство, введите file:///usr/share/doc/postgresql-doc-8.4/html/index.html в адресную строку вашего браузера.

2. Для общей информации по SQL смотрите Using SQL Special Edition от Rafe Colburn.

3. Также смотрите страницу PostgreSQL Ubuntu Wiki для дополнительной информации.

Источник: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/postgresql

Команда Dig для проверки DNS-зоны

Dig (domain information groper) - утилита для роботы с DNS серверами. Входит в состав BIND. При запуске она отображает свою версию программы, которая обычно совпадает с версией BIND. Опишу несколько моментов, как ней пользоваться:
Для того, чтобы просто получить IP-адрес по имени хоста необходимо выполнить:

[root@router ~]# dig unigx.org.ua ; <<>> DiG 9.4.2 <<>> unigx.org.ua ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37503 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1;; QUESTION SECTION: ;unigx.org.ua. IN A ;; ANSWER SECTION: unigx.org.ua. 3600 IN A 82.207.87.36 ;; AUTHORITY SECTION: unigx.org.ua. 3600 IN NS ns.unigx.org.ua. unigx.org.ua. 3600 IN NS ns.yuren.com.ua. ;; ADDITIONAL SECTION: ns.unigx.org.ua. 3600 IN A 82.207.87.36 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 20 08:17:26 2010 ;; MSG SIZE rcvd: 106

Для того, что бы получить доменное имя по IP-адресу (PTR-запись) для поиска в обратных зонах, необходимо DIG указать с параметром "-x":

[root@router ~]# dig -x 82.207.87.36 ; <<>> DiG 9.4.2 <<>> -x 82.207.87.36 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46705 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1;; QUESTION SECTION: ;36.87.207.82.in-addr.arpa. IN PTR ;; ANSWER SECTION: 36.87.207.82.in-addr.arpa. 67156 IN PTR mail.shzzch.com. ;; AUTHORITY SECTION: 87.207.82.in-addr.arpa. 16737 IN NS ns2.ukrtelecom.ua. 87.207.82.in-addr.arpa. 16737 IN NS expert.ukrtel.net. ;; ADDITIONAL SECTION: expert.ukrtel.net. 5922 IN A 195.5.6.10 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 20 08:21:46 2010 ;; MSG SIZE rcvd: 150

Для просмотра MX- записи для домена, необходимо указать парамерт "mx":

[root@router ~]# dig ya.ru mx ; <<>> DiG 9.4.2 <<>> ya.ru mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3248 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2;; QUESTION SECTION: ;ya.ru. IN MX ;; ANSWER SECTION: ya.ru. 592 IN MX 10 mx.yandex.ru. ;; AUTHORITY SECTION: ya.ru. 162 IN NS ns1.yandex.ru. ya.ru. 162 IN NS ns5.yandex.ru. ;; ADDITIONAL SECTION: ns1.yandex.ru. 86602 IN A 213.180.193.1 ns5.yandex.ru. 86602 IN A 213.180.204.1 ;; Query time: 202 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 20 08:57:47 2010 ;; MSG SIZE rcvd: 117

Для отображения только имени хоста, можно использовать параметр "+short":

[root@router ~]# dig -x 82.207.87.36 +short mail.shzzch.com.

По умолчанию в dig, отключен список поиска в /etc/resolv.conf, включаем с помощью опции в запросе "+search":

[root@router ~]# dig ya.ru +search +short 87.250.251.3 93.158.134.3 213.180.204.3 77.88.21.3 87.250.250.3

Для того, что бы узнать серийный номер зоны, запускаем с параметром "soa":

[root@router ~]# dig ya.ru soa +short ns1.yandex.ru. sysadmin.yandex.ru. 2010121600 10800 900 2592000 900

Если необходимо узнать версию DNS-сервера(не есть гуд!):

[root@router ~]# dig -t txt -c chaos VERSION.BIND @ns1.yandex.ru ; <<>> DiG 9.4.2 <<>> -t txt -c chaos VERSION.BIND @ns1.yandex.ru ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44195 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;VERSION.BIND. CH TXT ;; ANSWER SECTION: VERSION.BIND. 0 CH TXT "9.5.2-P4" ;; AUTHORITY SECTION: VERSION.BIND. 0 CH NS VERSION.BIND. ;; Query time: 51 msec ;; SERVER: 213.180.193.1#53(213.180.193.1) ;; WHEN: Mon Dec 20 09:18:57 2010 ;; MSG SIZE rcvd: 65

Для проверки возможности копирования зоны с с master сервера на slave сервер:

[root@router ~]# dig @ns.yuren.com.ua unigx.org.ua. axfr ; <<>> DiG 9.4.2 <<>> @ns.yuren.com.ua unigx.org.ua. axfr ; (1 server found) ;; global options: printcmd unigx.org.ua. 3600 IN SOA ns.unigx.org.ua. admin.shzzch.com. 2010112501 3600 900 3600000 3600 unigx.org.ua. 3600 IN NS ns.unigx.org.ua. unigx.org.ua. 3600 IN NS ns.yuren.com.ua. unigx.org.ua. 3600 IN A 82.207.87.36 files.unigx.org.ua. 3600 IN A 82.207.87.36 forum.unigx.org.ua. 3600 IN A 82.207.87.36 ftp.unigx.org.ua. 3600 IN A 82.207.87.36 ns.unigx.org.ua. 3600 IN A 82.207.87.36 www.unigx.org.ua. 3600 IN A 82.207.87.36 unigx.org.ua. 3600 IN SOA ns.unigx.org.ua. admin.shzzch.com. 2010112501 3600 900 3600000 3600 ;; Query time: 462 msec ;; SERVER: 193.108.251.254#53(193.108.251.254) ;; WHEN: Mon Dec 20 09:43:04 2010 ;; XFR size: 10 records (messages 1, bytes 278)

Проверим отдает ли DNS-сервер unigx.org.ua, зону unix.ck.ua:

vlymar@mops:~$ dig @unigx.org.ua unix.ck.ua ; <<>> DiG 9.4.3-P3 <<>> @unigx.org.ua unix.ck.ua ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20484 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;unix.ck.ua. IN A ;; ANSWER SECTION: unix.ck.ua. 3600 IN A 82.207.87.36 ;; AUTHORITY SECTION: unix.ck.ua. 3600 IN NS ns.yuren.com.ua. unix.ck.ua. 3600 IN NS ns.unix.ck.ua. ;; ADDITIONAL SECTION: ns.unix.ck.ua. 3600 IN A 82.207.87.36 ;; Query time: 134 msec ;; SERVER: 82.207.87.36#53(82.207.87.36) ;; WHEN: Mon Dec 20 09:53:12 2010 ;; MSG SIZE rcvd: 104

Dig посылает DNS-серверу unigx.org.ua, запрос SOA-записи для unix.ck.ua:

vlymar@mops:~$ dig @unigx.org.ua unix.ck.ua soa ; <<>> DiG 9.4.3-P3 <<>> @unigx.org.ua unix.ck.ua soa ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32124 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;unix.ck.ua. IN SOA ;; ANSWER SECTION: unix.ck.ua. 3600 IN SOA ns.unix.ck.ua. admin.shzzch.com. 2010121901 3600 900 3600000 3600 ;; AUTHORITY SECTION: unix.ck.ua. 3600 IN NS ns.unix.ck.ua. unix.ck.ua. 3600 IN NS ns.yuren.com.ua. ;; ADDITIONAL SECTION: ns.unix.ck.ua. 3600 IN A 82.207.87.36 ;; Query time: 185 msec ;; SERVER: 82.207.87.36#53(82.207.87.36) ;; WHEN: Mon Dec 20 10:01:55 2010 ;; MSG SIZE rcvd: 140

Для того, что бы просмотреть трассу поиска информации в DNS, в dig предусмотрена опция "+trace":

[root@srv ~]# dig unix.ck.ua +trace ; <<>> DiG 9.6.2-P1 <<>> unix.ck.ua +trace ;; global options: +cmd . 517876 IN NS b.root-servers.net. . 517876 IN NS l.root-servers.net. . 517876 IN NS k.root-servers.net. . 517876 IN NS m.root-servers.net. . 517876 IN NS h.root-servers.net. . 517876 IN NS e.root-servers.net. . 517876 IN NS a.root-servers.net. . 517876 IN NS d.root-servers.net. . 517876 IN NS g.root-servers.net. . 517876 IN NS i.root-servers.net. . 517876 IN NS c.root-servers.net. . 517876 IN NS j.root-servers.net. . 517876 IN NS f.root-servers.net. ;; Received 244 bytes from 127.0.0.1#53(127.0.0.1) in 2 msua. 172800 IN NS cd1.ns.ua. ua. 172800 IN NS he1.ns.ua. ua. 172800 IN NS ho1.ns.ua. ua. 172800 IN NS pch.ns.ua. ua. 172800 IN NS ya1.ns.ua. ua. 172800 IN NS ns-ua.ripe.net. ua. 172800 IN NS sunic.sunet.se. ua. 172800 IN NS sns-pb.isc.org. ;; Received 503 bytes from 199.7.83.42#53(l.root-servers.net) in 6 ms ck.ua. 172800 IN NS ba1.ns.ua. ck.ua. 172800 IN NS nix.net.ua. ck.ua. 172800 IN NS ns.ctsense.net. ck.ua. 172800 IN NS ns1.megastyle.com. ck.ua. 172800 IN NS ns2.megastyle.com. ;; Received 164 bytes from 216.218.215.27#53(he1.ns.ua) in 227 ms unix.ck.ua. 86400 IN NS ns.yuren.com.ua. unix.ck.ua. 86400 IN NS ns.unigx.org.ua. ;; Received 82 bytes from 72.20.97.27#53(ba1.ns.ua) in 204 ms unix.ck.ua. 3600 IN A 82.207.87.36 unix.ck.ua. 3600 IN NS ns.unigx.org.ua. unix.ck.ua. 3600 IN NS ns.yuren.com.ua. ;; Received 114 bytes from 193.108.251.254#53(ns.yuren.com.ua) in 1 ms

Для просмотра дополнительной текстовой информации о домене (запись TXT), необходимо выполнить:

[root@router /etc/rc.d]# dig unix.ck.ua txt | grep TXT unix.ck.ua. 3600 IN TXT "v=spf1 include:_spf.google.com -all"

Установка терминального сервера на базе Ubuntu Server 12.04 LTS 64-bit для работы c платформой 1C 8.3

Конспект установки и настройки терминального сервера XRDP на базе Ubuntu server 12.04 LTS 64-bit для работы пользователей с конфигурациями, которые запускаются на платформе 1С 8.3 в native режиме, без эмулятора Windows.

Устанавливаем дистрибутив ubuntu-12.04.2-server-amd64.iso, процедура стандартная почти автоматическая, в интернете можно найти подробное описание процесса.

Рекомендую поставить эти службы, ненужное можно будет потом временно отключить.

Linux Ubuntu

Устанавливаем графическую оболочку LXDE (http://xaxatyxa.ru/_ubuntu/ustanavlivaem-lxde-ubuntu.html) :

sudo apt-get update && apt-get upgrade

sudo apt-get install lxde

перезагрузка.

После ребута ubuntu загрузится уже в графическом режиме.

LXDE

Делаем автоматический вход в Ubuntu Lxde:

запускаем LXTerminal

для удобства работы устанавливаем Midnight Commander

sudo apt-get install mc

sudo mc

делаем правку файла sudo leafpad /etc/lxdm/lxdm.conf или в mc F4(edit)

надо раскомментировать (убрать #) перед autologin в самом начале файла,

поставить имя желаемого пользователя для автовхода:

autologin=ИмяПользователяДляАвтовхода

перезагрузка, теперь при старте сразу попадаем на рабочий стол lxde .


Устанавливаем XRDP:

sudo apt-get update

С сайта http://scarygliders.net/ берем адрес скрипта для автоматической компиляции XRDP из исходников самой последней доступной версии.

sudo apt-get install git

sudo git clone https://github.com/scarygliders/X11RDP-o-Matic.git

создается в домашнем каталоге папка X11RDP-o-Matic

sudo su

cd X11RDP-o-Matic

./X11rdp-o-matic.sh –justdoit

стартует долгий процесс скачивания, проверки и компиляции модулей для xrdp, обязательно нужно дождатся завершения процедуры -

LXDE2

в папке /X11RDP-o-Matic/packages/ лежат уже готовые собранные пакеты x11rdp_0.7.0-1_amd64.deb, xrdp_0.7.0-1_amd64.deb, пригодятся при переинсталированнии сервера без необходимости еще раз компилировать и собирать xrdp из исходников.

Проверяем установку xrdp:

sudo /etc/init.d/xrdp restart

netstat -lntp |grep 3389

Ставим xrdp в автозагрузку:

sudo update-rc.d xrdp defaults

sudo update-rc.d xrdp enable

Там же в папке /X11RDP-o-Matic/ находится скрипт создания файла *.xsession с командой startlxde для запуска LXDE при подключении пользователей:

./RDPsesconfig.sh

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

Устанавливаем 1С 8.3и HASP драйвер:

sudo dpkg -i haspd_3.3-eter5ubuntu_amd64.deb

sudo dpkg -i haspd-modules_3.3-eter5ubuntu_amd64.deb

следующий пакет 32 бит, но без него не запускались HASP ключи:

sudo dpkg -i dkms-aksparlnx_3.2-eter1ubuntu_all.deb

Проверяем- sudo /etc/init.d/haspd restart

LXDE1C

Видим что aksusbd не запустился. Интернет подсказал решение - ”Некоторые программы из пакета драйверов HASP откомпилированы для 32-х битных систем. Для них необходимо установить поддержку 32-х битных приложений. Без пакета ia32-libs драйвера HASP-ключей на нашей 64-х битной системе работать не будут.” Устанавливаем:

sudo apt-get install ia32-libs

теперь aksusbd наконец стартует.

Распаковываем файлы deb64.tar.gz и client.deb64.tar.gz из дистрибутива 1С 8.3 в одну папку.

Устанавливаем:

sudo dpkg -i 1c*.deb

sudo apt-get -f install

sudo apt-get install ttf-mscorefonts-installer

sudo apt-get install imagemagick

Запускаем для проверки конфигуратор и создаем пустую базу -

1C



Останавливаем службу сервера 1С:Предприятия 8.3 ( пока не нужна )

sudo /etc/init.d/srv1cv83 stop

Отключаем автозапуск сервера 1С:Предприятия 8.3

sudo update-rc.d srv1cv83 disable

заодно можно отключить и другие не задействованные службы:

sudo update-rc.d postgresql disable

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

Устанавливаем программы необходимые для работы пользователей в терминальных сессиях :

sudo apt-get install libreoffice

sudo apt-get install libreoffice-l10n-ru

sudo apt-get install libreoffice-l10n-uk

в репозитарии версия 3, так же доступен к скачиванию и установке новый libreoffice 4 с сайта.

http://www.libreoffice.org/download/?type=deb-x86_64&lang=ru&version=4.1.0

sudo apt-get install firefox

sudo apt-get install firefox-locale-ru

sudo apt-get install sylpheed

sudo apt-get install qbittorrent

sudo apt-get install cups-pdf

Настраиваем рабочий стол и окружение:

Добавляем на LXPanel - “Индикатор раскладок клавиатуры“, “Клавиатурный индикатор“

Мне понадобился еще один язык для переключения — украинский, поэтому редактируем файл /etc/default/keyboard (с правами администратора):

sudo leafpad /etc/default/keyboard

Изменяем строку:

XKBLAYOUT="us,ru,ua"

Настраиваем «скелеты» для пользователей:

Выполняем с правами рута

cd /home/Настроенный_Пользователь

cp -R -f -b .config/ /etc/skel/ # настройки lxde

cp -R -f -b Desktop/ /etc/skel/ # Содержимое рабочего стола

Теперь можем добавлять пользователей терминалов:

sudo adduser term1 # например

sudo adduser term2 #

Подключаемся как term1, я пробовал с Windows 8 64 bit, запустилось, но в терминале возникли проблемы с переключением языков клавиатуры.

Для решения редактируем файл /etc/X11/Xsession:

В самом начале после строки set -e прописываем:

if [ -r /etc/default/locale ]; then

. /etc/default/locale

export LANG LANGUAGE

fi

setxkbmap -layout "us,ru,ua" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

Снова коннектимся к серверу и наконец получаем работающий терминал клиента -

WindowsLinux

В принцыпе, там еще много донастраевать в Ubuntu нужно, но основа создана и сервер терминалов, работающий по протоколу RDPv5 запущен, если нужно более 10-и подключенных одновременно клиентов, тогда увеличиваем значение записанное в опцию MaxSessions в секции Sessions файла /etc/xrdp/sesman.ini.

Вид рабочей базы 1С Бухгалтерия 8 на Linux:

1C в Linux



Низкоуровневое форматирование на Debian или Ubuntu

Случилось так, что понадобилось мне низкоуровневое форматирование. Винт на 2Тб, а значит и времени тоже надо было много, потому решил вставить винт в сервер и делать всё на нем. Процедура эта не трудоемкая, но очень длительная.

1. Подключаем винт
2. Перезагружаем железо
3. Сотрим список подключенных винтов и флешек

1

# fdisk -l

В результате получим нечто такого плана (для примера взял флешку на 4Гб):

1

2

3

4

5

6

7

8

9

10

11

Disk /dev/sdg: 4057 MB, 4057989120 bytes

255 heads, 63 sectors/track, 493 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xcad4ebea


<code>Device Boot Start End Blocks Id System

/dev/sdg4 * 1 494 3962848+ c W95 FAT32 (LBA)

Partition 4 has different physical/logical endings:

<code>phys=(492, 254, 63) logical=(493, 90, 45)

/dev/sdg — это наш пациент (последняя буква может отличатся!)
4. Отмонитируем все разделы:

1

# umount /dev/sdg*

5. Запускаем форматирование

1

# dd if=/dev/zero of=/dev/sdg

По завершению форматирования получим объем флешки (должен соответствовать заявленному), скорость и время записи.
По памяти, жесткий диск форматировался со скоростью 1 Гб/мин (~16,5 Мб/сек), ибо подключен был через sata, а флешка куда дольше будет.


Источник: http://g13.org.ua/%D0%BD%D0%B8%D0%B7%D0%BA%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D0%BE%D0%B5-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-debian-%D0%B8/

Настройка звука в XRDP для Linux Ubuntu

Автор: Рудюк С.А.

http://corp2.net

Замена Windows Server на Linux Ubuntu - выгодное и полезное решение. Такое решение может получиться более стабильно работающим и главное, масштабируемым и более защищенным. Но, есть в решениях Linux всегда ложка дегтя. Прежде всего, это работа с аппаратурой. Ряд аппаратных средств работает только с Windows. И даже гордятся этим, выставляя на своем корпусе лейбочку мелко-софтовской компании...

Так же, возникает вопрос настройки звука для XRDP в Linux Ubuntu. По умолчанию, звук в XRDP отключен и чтоб его настроить, нужно провести ряд действий. Данная статья рассказывает, как это сделать.

Итак, устанавливаем необходимые нам пакеты:

[code language="bash"]
sudo apt-get build-dep xserver-xorg-core
[/code]


[code language="bash"]
apt-get install autoconf libtool pkg-config
[/code]


[code language="bash"]
apt-get install libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev
[/code]


Устанавливаем Git, чтоб иметь возможность брать исходные коды прямо из репозитариев:

[code language="bash"]
apt-get install git
[/code]

Клонируем проект XRDP в текущую папку:

[code language="bash"]
git clone git://github.com/FreeRDP/xrdp.git
[/code]

Можно так же просто закачать zip-архив по адресу: https://github.com/FreeRDP/xrdp

Компилируем XRDP:

[code language="bash"]
./bootstrap
[/code]


[code language="bash"]
./configure --enable-jpeg --enable-simplesound
[/code]

С некоторых пор, разработчик убрал опцию --enable-simplesound, поэтому, не пугайтесь, если у вас выдастся сообщение о отсутствующей опции. Сейчас она не особо нужна, т.к. автоматически определяется подключен звук или нет.

[code language="bash"]
make
[/code]


[code language="bash"]
make install
[/code]

Компилируем X11RDP.

Для этого, заходим в каталог xorg/X11R7.6 и вводим команду:

[code language="bash"]
./buildx.sh /opt/X11rdp
[/code]

Создаем ссылку:

[code language="bash"]
ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp
[/code]

Добавляем в загрузку:

[code language="bash"]
cp /etc/xrdp/xrdp.sh /etc/init.d/
[/code]


[code language="bash"]
update-rc.d xrdp.sh defaults
[/code]

Копируем ключ rsa для шифрации:

[code language="bash"]
sudo cp ../xrdp/rsakeys.ini /etc/xrdp
[/code]

Компилируем пакеты, необходимые для переадресации звука:

[code language="bash"]
sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev
[/code]

Закачиваем исходные коды пакета pulseaudio из http://freedesktop.org/software/pulseaudio/releases/:

[code language="bash"]
tar -zxvf pulseaudio-3.0.tar.gz
[/code]

Входим в каталог и выполняем:

[code language="bash"]
./configure
[/code]

Если возникли проблемы при компиляции, то возможно вы закачали не тот пакет pulseaudio.

Переходим в каталог xrdp/sesman/chansrv/pulse.

Вам необходимо прокомпилировать библиотеку для передачи звука по XRDP.

Отредактируйте переменную PULSE_DIR на путь к исходным кодам pulseaudio.
После этого, выполните:

[code language="bash"]
make
[/code]

Скопируем библиотеку в pulse (пути могут отличаться в зависимости от версии pulseaudio):

[code language="bash"]
sudo cp module-xrdp-sink.so /usr/lib/pulse-3.0/modules/
[/code]

Теперь, необходимо подредактировать ряд конфигурационных файлов.

Редактируем (или добавляем) файл /etc/asound.conf:

[code language="bash"]
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
[/code]

Редактируем файл /etc/pulse/default.pa:

[code language="bash"]
.nofail
.fail
load-module module-augment-properties
load-module module-xrdp-sink
load-module module-native-protocol-unix
[/code]

Перезагружаемся. После этого, если все правильно настроено у Вас должен передаваться звук по RDP.


P.S. Если у Вас возникло желание сменить дорогие решения на Windows на эффективные и хорошо масштабируемые решения на Linux, звоните к автору данной статьи 067 901-63-22 Рудюк Сергей Анатольевич. Или пишите на: rs@corp2.net

Публикация исходного кода в Wordpress с помощью модуля SyntaxHighlighter

WordPress.com не позволяет использовать в блоге потенциально опасный код, однако есть возможность публикации исходного кода для просмотра. Мы создали тег, который сохраняет форматирование исходного кода и даже обеспечивает подсветку синтаксиса для некоторых языков. Пример:

1

2

3

4

#button {

<code>font-weight: <code>bold;

<code>border: <code>2px solid <code>#fff;

}

Чтобы получить результат, аналогичный приведенному выше фрагменту, заключите свой код в эти теги:

[code language="css"]
ваш код
[/code]

Параметр «language» определяет язык и правила подсветки синтаксиса. Поддерживаются следующие значения:

  • actionscript3
  • bash
  • coldfusion
  • cpp
  • csharp
  • css
  • delphi
  • erlang
  • fsharp
  • diff
  • groovy
  • html
  • javascript
  • java
  • javafx
  • matlab
  • objc
  • perl
  • php
  • text
  • powershell
  • python
  • r
  • ruby
  • scala
  • sql
  • vb
  • xml

Если значение параметра «language» не задано, используется значение «text» (без подсветки синтаксиса).
Код между тегами «code» будет автоматически закодирован для отображения, поэтому вам не стоит беспокоиться об элементах HTML или о чем-либо подобном.

Параметры конфигурации

Теги также поддерживают множество параметров конфигурации, которые можно использовать для настройки внешнего вида. Их применение совсем необязательно.

  • autolinks (true/false) — Каждый URL в коде отображается как гиперссылка. Значение по умолчанию: true.
  • collapse (true/false) — Если задано значение true, при загрузке страницы область кода будет свернута. Для того, чтобы развернуть ее, нужно будет кликнуть по ней. Это полезно для больших фрагментов кода. По умолчанию задано значение false.
  • firstline (номер) — Определяет, с какого числа начинается нумерация строк. Значение по умолчанию: 1.
  • gutter (true/false) — Если задано значение false, номера строк будут скрыты. Значение по умолчанию: true.
  • highlight (номера, разделенные запятыми) — Номера строк, которые будут выделены, например, «4,7,19».
  • hmtlscript (true/false) — Если задано значение true, выполняется подсветка HTML/XML-кода. Это полезно при публикации смешанного кода, например, PHP внутри HTML. Работает только с некоторыми языками. Значение по умолчанию: false.
  • light (true/false) — Если задано значение true, номера строк и панель инструментов будут скрыты. Это полезно при размещении фрагмента кода из одной-двух строк. Значение по умолчанию: false.
  • padlinenumbers (true/false/целое число) — Позволяет контролировать дополнение номеров строк нулями. Значение true задает автодополнение, значение false отключает дополнение, число задает фиксированное количество знаков для номеров строк.
  • toolbar (true/false) — Если задано значение false, при наведении на код не будет появляться панель инструментов с кнопками. Значение по умолчанию: true.
  • wraplines (true/false) — Если задано значение false, будет отключен перенос строк. При наличии длинных строк появится горизонтальная полоса прокрутки.
  • title (строка) – заголовок для кода. Может быть полезным в сочетании с параметром <code>collapse.

Примеры использования вышеописанных параметров:

8

9

10

11

Эта строка не выделена.

Эта строка выделена.

Эта строка выделена.

Эта строка не выделена.

0001

Это короткий фрагмент кода с дополнением номеров строк нулями до 4 знаков.

//В этом примере отключен перенос строк. Чтобы прочитать текст полностью, вам придется воспользоваться полосой прокрутки. Кроме того, в данном примере отключена нумерация строк и спрятана панель инструментов.

А это фрагмент кода побольше. Здесь выбран язык PHP и выделена строка номер 12.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<!DOCTYPE html PUBLIC <code>"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>">

<html xmlns=<code>"<a href="http://www.w3.org/1999/xhtml" data-mce-href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>" xml:lang=<code>"en" lang=<code>"en">

<head>

<code><meta http-equiv="Content-Type" <code>content="text/html; charset=UTF-8" <code>/>

<code><title>WordPress.com Code Example</title>

</head>

<body>

<code><h1>WordPress.com Code Example</h1>


<code><p><?php echo <code>'Hello World!'; ?></p>


<code><p>Эта строка выделена.</p>


<code><p>Очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень длинная строка.</p>


<code><div class<code>="foobar"<code>>

<code>This is an

<code>example of smart

<code>tabs.

<code></div>


<code><p><a href="http://wordpress.com/</a>">WordPress.com</a></p>

</body>

</html>

Благодарности
Для реализации данной возможности используется проект SyntaxHighlighter (автор Alex Gorbatchev). Пользователи WordPress.org могут установить соответствующий плагин.

Источник: https://ru.support.wordpress.com/code/posting-source-code/

Настройка веб-браузеров для работы с 1С

Настройка и использование веб-браузера Microsoft Internet Explorer

Особенности использования

Для работы с веб-клиентом в операционной системе Windows XP SP 2 требуется наличие системной библиотеки jscript.dll версии 5.6.0.8834 или выше.

Библиотека находится в каталоге system32 операционной системы. Если на вашем компьютере установлена более ранняя версия библиотеки, то возможно значительное замедление работы веб-клиента. Для обновления версии необходимо скачать пакет обновлений, находящийся по адресу http://support.microsoft.com/kb/942840/en-us.

При использовании Microsoft Internet Explorer 7 и Microsoft Internet Explorer 8 при включенных закладках, в том окне, где закладки есть, для переключения с помощью клавиатуры из главного (окно с закладками) в дочернюю форму (отдельное окно) следует использовать сочетания клавиш [Shift]+Ctrl+F6. Если закладки отключены, то для переключения можно использовать также сочетания клавиш [Shift+]Ctrl+Tab.

Особенности использования расширенных средств работы с файлами

Все операции с файловой системой (получение файла с сервера, передача файла на сервер, удаление файла и т.п.) выполняются строго интерактивно. Если выполнение действия не требует взаимодействия с пользователем (напрмер выбора файла), то выдается диалог-предупреждение, требующий от пользователя подтверждения.

Реализация для Internet Explorer требует установки специального ActiveX компонент "1С:Предприятие 8.2. Расширение работы с файлами для Internet Explorer (x86)", либо ее 64 разрядный вариант для 64 разрядного Internet Explorer. Компонент включен в платформу, но ее установка должна быть предусмотрена в конфигурации (должен быть реализован вызов метода УстановитьРасширениеРаботыСФайлами).

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

Для работы с файлами используется библиотека Microsoft Core XML Services (MSXML). Рекомендованные версии MSXML 6.0 и MSXML 4.0. В случае использования MSXML 3.0, возможны проблемы с передачей файлов большого размера с клиента на сервер.

Со списком версий модулей MSXML, ограничений и рекомендаций по установке можно ознакомиться на странице http://support.microsoft.com/kb/269238.


Настройки использования веб-браузера

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя. Для этого

  • В меню Сервис (Tools) выберите пункт Свойства обозревателя (Internet Options) и выполните настройки:
  • Разрешите выполнение JavaScript скриптов:
    • на вкладке Безопасность (Security) для зоны Internet нажмите кнопку Другой (Custom level);
    • в разделе Сценарии (Scripting) для параметра Астивные сценарии (Active scripting) установите Разрешить (Enable) и нажмите кнопку "OK".
  • Разрешите всплывающие окна:
    • перейдите на вкладку Конфиденциальность (Privacy);
    • в разделе Блокирование всплывающих окон (Pop-up Blocker) снимите флажок Блокировать всплывающие окна (Block Pop-ups).
  • Разрешите использование cookies:
    • на вкладке Конфиденциальность (Privacy) с помощью регулятора выберите уровень использования cookies - не выше Умеренно высокий (Medium High).

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

  • на вкладке Безопасность (Security) нажмите кнопку Другой (Custom level);
  • в открывшемся окне необходимо установить Разрешить (Enable) для следующих параметров:
    • Запрос разрешения для ActiveX объектов (Automatic promting for ActiveX controls);
    • Загрузка подписанных ActiveX объектов с разрешения пользователя (Download signed ActiveX controls);
    • Работа с ActiveX объектам и плагинами (Run ActiveX controls and plug-ins);
    • Работа с объектами, помеченными как безопастные (Script ActiveX controls marked safe for scripting).

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

Для настройки языка ввода по умолчанию выполните следующие действия:

  • откройте настройки операционной системы "Язык и региональные стандарты" ("Regional and Languages Options");
  • на закладке "Языки" ("Languages") в разделе "Языки и службы текстового ввода" ("Text services and input languages") нажмите кнопку "Подробнее..." ("Details...");
  • в открывшемся окне на закладке "Параметры" ("Settings") в разделе "Язык ввода по умолчанию" ("Default input language") выберите нужный язык;
  • нажмите кнопку "OK".

При работе в Internet Explorer 8 в некоторых ситуациях при переходе к уже открытому окну из другого окна будет выдаваться диалог с текстом "Нажмите OK для перехода к окну" и кнопкой OK. После нажатия кнопки будет осуществлен переход к окну.

Настройка и использование веб-браузера Mozilla Firefox

Особенности использования

Все операции с файловой системой (получение файла с сервера, передача файла на сервер, удаление файла и т.п.) выполняются строго интерактивно. Если выполнение действия не требует взаимодействия с пользователем (напрмер выбора файла), то выдается диалог-предупреждение, требующий от пользователя подтверждения.

Настройки использования веб-браузера

Для подключения к информационным базам 1С:Предприятия 8 с помощью Mozilla Firefox нужно выполнить следующие настройки:

  • Откройте браузер, в меню Инструменты (Tools) выберите пункт Настройки (Options);
  • В открывшемся окне перейдите в раздел Содержимое (Content)
    • Снимите флажок Блокировать всплывающие окна (Block pop-up windows);
    • Установите флажок Использовать JavaScript (Enable JavaScript).
  • Перейдите в раздел Приватность (Privacy) установите следующие настройки:
    • Установите флажок Принимать cookies с сайтов (Assept cookies from sites);
    • Для детальной настройки приема или отклонения cookies щелкните кнопку Исключения (Exeptions) и следуйте пояснениям диалога настройки.

В случае если в качестве браузера используется английская версия Mozilla Firefox, то для правильной работы веб-клиента требуется выполнить следующую настройку (расположение настроек приведено для версии 3.5):

  • Откройте браузер, в меню Tools выберите пункт Options;
  • На закладке Contents в группе Fonts & Colors нажмите кнопку Advanced;
  • В параметре Default Character Encoding выберите Unicode.

Модификацию остальных параметров, которые могут потребоваться для работы с веб-клиентом 1С:Предприятия, можно осуществить с помощью команды "Сервис - Настройка веб-браузера". В окне выполняются настройки, которые можно также выполнить в настройках самого веб-браузера в диалоге запроса привилегий.

В окне осуществляется настройка следующих параметров обозревателя (в круглых скобках указывается аналогичные параметры настроек веб-браузера):

  • Разрешить работу с буфером обмена, расширением работы с файлами, внешними компонентами (signed.applets.codebase_principal_support) - для работы с буфером обмена, внешними компонентами и расширенной работы с файлами (значение true);
  • Разрешить использование в параметрах строки запуска нелатинских символов (network.standard-url.encode-query-utf8) - для использования нелатинских символов в адресной строке (значение true);
  • Разрешить использование клавиатуры для переключения между окнами приложений (dom.popup_allowed_events) - для разрешения навигации по окнам приложения с клавиатуры (добавляет к значению параметра событие keydown);
  • Использовать аутентификацию операционной системы (network.automatic-ntlm-auth.trusted-uris) - если установлен, то будет выполняться аутентификация операционной системы. Данная настройка изменяет только значение ключа network.automatic-ntlm-auth.trusted-uris. Для аутентификации операционной системы в конкретной конфигурации сети и веб-сервера, возможно, потребуется задание значений для ключей network.negotiate-auth.trusted-uris и network.negotiate-auth.delegation-uris. Дополнительную информацию см. в https://developer.mozilla.org/en/Integrated_Authentication.

Данные параметры можно также настроить вручную. Для этого необходимо в адресной строке веб-браузера набрать about:config, затем в строке фильтра набрать любое слово из имени параметра (например, principal) и поменять его значение в списке.

Рекомендуется выполнить настройку для сохранения файлов:

  • Откройте браузер, в меню Инструменты (Tools) выберите пункт Настройки (Options);
  • В открывшемся окне перейдите в раздел Основные;
  • Установите флажок Всегда выдавать запрос на сохранения файла.

Для ручной настройки аутентификации следует:

  • в адресной строке браузера набрать about:config.
  • затем на странице настроек в строке фильтра ввести название параметра.
    Данная настройка осуществляется для трех параметров:
    • network.automatic-ntlm-auth.trusted-uris,
    • network.negotiate-auth.delegation-uris,
    • network.negotiate-auth.trusted-uris.
  • далее задать список веб-серверов, через которые будет осуществляться работа с базой "1С:Предприятия".

Далее приведено описание, за что отвечают вышеприведенные параметры при разных способах аутентификации:

  • Веб-сервер поддерживает NTLM-аутентификацию.
    Если имя веб-сервера, к которому осуществляется попытка доступа, перечислено в списке имен, содержащихся в параметре network.automatic-ntlm-auth.trusted-uris, то будет осуществлена попытка автоматической аутентификации. Если же имени веб-сервера там нет, то браузер покажет диалог, в котором необходимо указать логин и пароль пользователя для доступа к веб-серверу.
  • Веб-сервер поддерживает Kerberos-аутентификацию.
    Для того, чтобы получить доступ к веб-серверу с данным типом аутентификации, в параметр network.negotiate-auth.trusted-uris нужно добавить имя этого веб-сервера. При работе с файловой информационной базой этого будет достаточно. В случае необходимости обеспечить автоматическую аутентифкацию пользователей веб-клиента при использовании клиент-серверного варианта "1С:Предприятия", необходимо добавить DNS-имя этого веб-сервера в параметр network.negotiate-auth.delegation-uris.
    В случае, если имя веб-сервера, к которому осуществляется доступ, не обнаружено в параметре network.negotiate-auth.trusted-uris, аутентификация производиться не будет, и пользователь увидит сообщение об ошибке 401 Unauthorized. Для информирования пользователя о действиях, которые ему необходимо предпринять, администратор может модифицировать страницу сообщения об ошибке 401 (см. документацию к используемому веб-серверу).

Особенности использования расширенных средств работы с файлами

Все операции с файловой системой (получение файла с сервера, передача файла на сервер, удаление файла и т.п.) выполняются строго интерактивно. Если выполнение действия не требует взаимодействия с пользователем (напрмер выбора файла), то выдается диалог-предупреждение, требующий от пользователя подтверждения.

Расширение для работы с файлами требует предоставления привилегии UniversalXPConnect. Веб-браузер Mozilla FireFox выполняет запрос привилегии интерактивно, но пользователь может запомнить решение для данного веб-сайта.

В случае, если веб-браузер Mozilla FireFox запомнил решение пользователя по предоставлению привилегии, а пользователь хочет изменить это решение, ему придется самостоятельно отредактировать файл prefs.js, который хранится в папке его профиля веб-браузера Mozilla Firefox.

Описание, как найти папку профиля, находится здесь:
http://wiki.mozilla.ru/index.php/О профилях Mozilla Firefox (русскоязычная статья)
http://support.mozilla.com/en-US/kb/Profiles (англоязычная статья).

Далее нужно:
1. Завершить работу Mozilla FireFox.
2. Открыть prefs.js любым текстовым редактором
3. Найти в тексте строку UniversalXPConnect. Будет найден фрагмент текста следующего вида:
user_pref("capability.principal.codebase.p.granted", "UniversalXPConnect");
user_pref("capability.principal.codebase.p.id", "");
user_pref("capability.principal.codebase.p.subjectName", "");
либо
user_pref("capability.principal.codebase.p.denied", "UniversalXPConnect");
user_pref("capability.principal.codebase.p.id", "");
user_pref("capability.principal.codebase.p.subjectName", "");
где - любое число, а - это адрес нужного веб сайта. Если другой, то нужно продолжить поиск "UniversalXPConnect" по тексту.
4. Удалить найденные строки из текста.

Настройка и использование веб-браузера Apple Safari

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя.

Для этого откройте меню Настройки Safari (Safari Settings) выберите пункт Настройки (Preferences) и выполните настройки:

  • Разрешите выполнение JavaScript скриптов:
    на закладке Безопасность (Security) выберите Подключить JavaScript (Enable JavaScript)
  • Разрешите использование cookies:
    на закладке Безопасность (Security) в группе Принимать cookies (Accept cookies) выберите Только от посещаемых сайтов (Only from sites I visit);
  • Разрешите всплывающие окна:
    на закладке Безопасность (Security) снимите флажок Блокировать всплывающие окна (Block pop-up windows).

Рекомендуется выполнить настройку для сохранения файлов. Для этого:

  • В меню Настройки Safari (Safari Settings) выберите пункт Настройки (Preferences);
  • На закладке Основные (General) установите флажок Всегда выполнять запрос перед загрузкой (Always prompt before downloading).

Настройка и использование веб-браузера Google Chrome

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя.

Для этого откройте меню Инструменты (Tools), выберите пункт Параметры (Options), на закладке Расширенные (Under the Hood) нажмите кнопку Настройки содержания (Content settings) и выполните настройки:

  • Разрешите использование cookies:
    на закладке Файлы cookie (Cookies) выберите Разрешить сохранять локальные данные (рекомендуется) (Allow local data to be set (recommended)) или настройте исключения;
  • Разрешите выполнение JavaScript скриптов:
    на закладке JavaScript выберите Разрешить всем сайтам использовать JavaScript (рекомендуется) (Allow all sites to run JavaScript (recommended) или настройте исключения;
  • Разрешите всплывающие окна:
    на закладке Всплывающие окна (Pop-ups) выберите Разрешить всплывающие окна для всех сайтов (Allow all sites to show pop-ups) или настройте исключения.

Рекомендуется выполнить настройку для сохранения файлов. Для этого:

  • Откройте меню Инструменты (Tools), выберите пункт Параметры (Options);
  • На закладке Расширенные (Under the Hood) в разделе Загрузки (Downloads) установите флажок Запрашивать место для сохранения каждого файла перед загрузкой (Ask where to save each file before download).