Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: При RDP / VPN / PPTP - не использовать это подключение для "своего" инета

Возникла потребность подключения к серверу по RDP , но этот сервер предоставляет к себе доступ только после установки VPN по протоколу PPTP. Увидел, что в настройках соединений (просто кликнул мышью по значку подключенной сети) имеется возможность для создания нового VPN подключения, указал там протокол, вид защиты и все остальное...

VPN-Соединение устанавливается успешно.

Затем RDP настроил (воспользовался для этого Remina) - тоже устанавливается.

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

Какие изменения нужно внести, чтоб сохранилась возможность подключения по RDP на этот сервер? Потому что простая перестановка параметра в IPv4 "автоматически (VPN, только адрес)" проблему с трафиком решает, но при этом же и по RDP подключиться не дает.
Ответ: () согласен. Просто у меня абсолютно нет доступа на серверную сторону в этот вопросе. Я не общаюсь с лицами принимающими решения на стороне VPN-сервера.

Но насколько я смог заметить, решение было выбрано именно такое, которое поддерживает провайдер там. И сертификаты проверялись, устанавливались. Еще контроль на используемый ай-пи при попытки установки впн-соединения там есть. Я когда в первый раз к ним подключался ( с ноута под вин8.1 ), то там зафиксировали ай-пи мой
Вопрос: Как подступиться к своему "чужому" серверу?

Здравствуйте, форумчане.
Долго думал, спрашивать ли... решился.
В общем, работаю админом на своем месте 6 лет. Админю кроме прочего несколько серверов на FreeBSD. Сервисы - как полагается: домен на самбе, dhcp+dns, ftp, pf, squid, exim+dovecot etc.
Так вот. До сих пор у меня такое ощущение, что не дай бог, что сломается, я ничего не смогу сделать: все было настроено до меня и работает (тьфу 3р) хорошо. Я не хочу быть в ситуации "покорми собак и ничего не трогай". Но это боевые сервера. Периодически назревают вопросы обновления, доустановки какого-н. софта - и они упираются в то, что система старая, что-то не поддерживается, надо обновляться, что отвалится при этом - неизвестно, и т.д. Получается замкнутый круг. Ковыряю периодически bsd на виртуалке. Сейчас додумался уже до того, чтобы развернуть образ с одного из боевых серверов на ВМ, отломать там все сервисы, поменять адреса (чтоб не гадило в сетку) и ковыряться. Читал на форумах, что в ситуации, когда много всего накручено, лучше не обновляться, а ставить и настраивать все с нуля параллельно. Но это можно как-то сделать для некритичных сервисов: nagios какой-н. поднять, апача параллельно и т.п. Но как я могу ковырять "второй" прокси-сервер, к примеру, если ему нужны для его сервисов реальный внешний адрес, dns и т.д.
Что подскажете? Как стать уверенным в своих силах админом и при этом, чтобы для "конторы" это все было прозрачно, а не так, что "вчера админ чего-то там переносил, так сегодня ничего не работает. на кол его!"
Простите за сумбурность мыслей.
Ответ: Не поднимешь если не забэкапишь полностью. Т.к. основная проблема - обновление софта. Именно коренной передел в ней и заключается. Сумеешь обновить всё на последнее и заменить старое новым из того что ушло совсем или дырявое и не обновляется(а иначе дырки) - считай вышло. А пароли скинуть то вообще не является проблемой про подступиться. Грейдься на 10, осваивай pkg и новые порты, читай portaudit и вперёд...
Вопрос: Замена слов в файле, используя утилиту - sed

Есть необходимость менять слова в файлах

Утилита sed позволяет это сделать так

Bash
1
sed s/ОБРАЗЕЦ/ЗАМЕНА/
Вот сценарий

Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
 echo -e  " По утрам он делал зарядку.\r
 Молния - электрический заряд." > zar.txt
 cat ./zar.txt
 
# sed 's/заряд/разряд/' < ./zar.txt > ./zar.txt
 sed 's/заряд/разряд/' zar.txt


Но в итоге конечный файл не меняется.

Подскажите пожалуйста как разрешить данную ситуацию ?

Как написать образец если нужно изменить сразу несколько слов или вообще предложений?

Написать для каждого слова в отдельной строке команду ?

Добавлено через 28 минут
Вернее файл меняется, но меняется найденное первое совпадение.

Если указать

Bash
1
 sed 's/заряд/разряд/g' ./zar.txt
То поиск и замена будет по всему тексту

Но почему он не делает строго по шаблону и меняет , в данном случае, и другие слова, например слово зарядка поменял на разрядка ?

Добавлено через 25 минут
А вот в данном примере изменения выводятся только на экран, но сам файл не изменяется, почему это может быть?

Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo -e "[share]" > ./smb-edit.conf
echo -e "\tcomment = Ubuntu File Server Share\r
    \tpath = /home/alex/samba/share\r
    \tbrowsable = yes\r
    \tguest ok = yes\r
    \tread only = no\r
    \tcreate mask = 0756
    \tcreate mask2 = 0756
    
    " > /home/alex/scripts/tmp/smb-edit.conf
 
sed  "s/\tcreate mask = 0756/\tcreate mask = 0000/" ./smb-edit.conf
 
gedit ./smb-edit.conf


В предыдущем примере так же... не изменяется конечный файл.

Sed не меняет данные в обрабатываемом файле. Редактор читает файл, обрабатывает прочитанное, и отправляет то, что получилось, в STDOUT.
При необходимости вывод sed можно перенаправить в файл, возможно — перезаписать старый файл.
Как перенаправить вывод в этот же файл и перезаписать найденную строчку?

Добавлено через 1 час 49 минут
Разобрался с ответом на один из своих вопросов :

Сообщение от masli
Как написать образец если нужно изменить сразу несколько слов или вообще предложений?
Написать для каждого слова в отдельной строке команду ?
Для выполнения нескольких действий с данными, используйте ключ -e при вызове sed.
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
echo -e "[share]" > ./smb-edit.conf
echo -e "\tcomment = Ubuntu File Server Share\r
    \tpath = /home/alex/samba/share\r
    \tbrowsable = yes\r
    \tguest ok = yes\r
    \tread only = no\r
    \tcreate mask = 0756
    \tcreate mask2 = 0756
    
    " > /home/alex/scripts/tmp/smb-edit.conf
    
    cat ./smb-edit.conf
    pause
 
sed -e  "s/\tcreate mask = 0756/\tcreate mask = 0000/; s/\tguest ok = yes/\tguest ok = no/"  ./smb-edit.conf
 
sed -e  "s:\tcreate mask = 0756:\tcreate mask = 1111:; s:\tguest ok = yes:\tguest ok = NO:"  ./smb-edit.conf


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

И изменение точно заданного шаблона.
Ответ: Все работает.

Вот полное решение, с комментариями (как я это понимаю)

Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env bash
function pause(){
   echo
   #read -p "$*"
   #m="Нажмите любую клавишу или подождите 3 секунды для продолжения..."
   m="Нажмите любую клавишу для продолжения..."
   # read -n 1 -t 3 -p "$m"
   read -n 1 -p "$m"
   echo
}
 
title (){
echo
echo -e "---------------- $1 ----------------\n"
}
mes (){
echo -e "$1  \n" 
}
echo -e "[Share]\r
\tcomment = Ubuntu File Server Share\r
\tpath = /home/alex/samba/share\r
\tbrowsable = yes\r
\tguest ok = yes\r
\tread only = no\r
\tcreate mask = 0756
\tcreate mask = 0000 " > ./smb-edit-2.conf
pause
 sed -r --in-place=.bak -e   "/^\s*create mask = /s/\S*\s*$/0000/
 /^\s*guest ok = /s/yes/no/" ./smb-edit-2.conf
 
 # /\S*\s*$/ - образец для поиска
# \S - не пробельный символ
# * - любое количество символов в строке
 # S* - любое количество не пробельных символов (то есть любых символов, кроме пробела) в строке
# s* - любое количество символа "пробел"
 
# -e - добавление скрипта или regex в исполняемые команды
# -r - использовать расширенный синтаксис регулярных выражений
# (спец символы активны по умолчанию)
               
 # ^ - данный символ означает начало строки, 
# но иногда, в зависимости от контекста, означает 
# отрицание в регулярных выражениях
# Сам символ слэш '/', хотя и не является специальными символом 
# в регулярных выражениях, но открывает-закрывает regexp в синтаксисе 
# /...pattern.../
# \S , где - не пробельный символ
# Звездочка -- * -- означает любое количество символов в строке, 
# предшествующих "звездочке", в том числе и нулевое число символов.
# то есть любое количество не пробельных символов
# Знак доллара -- $ -- в конце регулярного выражения соответствует концу строки.
# /^\tcreate mask = / - шаблон поиска
# s/\S*$/0000/, где 
# /\S*$/ - /образец/
# /0000/ - /замена/
# между предложениями можно не ставить точку символ ';' 
# если другое предложение переноситься на новую строку
 
 # -i[SUFFIX], --in-place[=SUFFIX]
 # редактировать файлы на месте (делает резервное копирование, если указан суффикс)


Решено.
Вопрос: Ошибка при загрузке Ubuntu

Установил на стационарном компьютере и ноутбуке в VirtualBox 4.2.4 Ubuntu 14.04. Компьютер и ноутбук по параметрам примерно одинаковые, однако на стационарном загружается и работает без проблем, а на ноутбуке при загрузке выдаёт вот такую ошибку:
[ 15.911007] intel_rapl: no valid rapl domians found in package 0
Цыфры в скобках всё время разные (вероятно, это время). Делал несколько переустановок, причём, после окончания установки Ubuntu автоматическая перезагрузка не происходит - приходится делать "врукопашную".
Несмотря на ошибку Ubuntu загружается и работает. Смог даже установить дополнения гостевой системы и свои программы. Однако, периодически зависает, мышка при этом перемещается, но никакие кнопки не работают. Спасает только "волшебная" кнопка VirtualBox - "Выключить питание".
Что бы это значило и как с этим бороться?
Ответ: Повысил версию VirtualBox до 5.0.20 ошибка при загрузке сохранилась, но "висяки" прекратились.
Тему можно закрыть.
Вопрос: Создать правила iptables для шлюза

Господа и дамы. Не пинайте.
Решил таки уйти от "пиратского" софта.Да и научиться новому.
Решил сделать полноценный шлюз на debian.
Встала огромная проблема с iptables. Штрудирование мануалов пока не дает результатов, везде по разному пишут, четкую информацию пока найти не смог. Кто обладает ссылкой на доступный, изложенный на более менее понятном языке учебник буду очень рад.
К проблеме: по мануалом смог накропать приблизительную таблицу iptsbles.
Вот она:
Кликните здесь для просмотра всего текста

#!/bin/bash
# Тут в принципе может и не надо этого всего но не помеха
# вдруг какой модуль не подгружен или форвардинг не включен
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Объявление переменных
export IPT="iptables"

# Интерфейс который смотрит в интернет
export WAN=ppp0

# Локальная сеть
export LAN=eth0
export LAN_IP_RANGE=7.0.0.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE



# Открываем ISMP
$IPT -A INPUT -p icmp -j ACCEPT
$IPT -A OUTPUT -p icmp -j ACCEPT

# Открываем RDP
#$IPT -A INPUT -i $WAN -p tcp --dport 3389 -j ACCEPT
#$IPT -A PREROUTING -t nat -d $WAN -p tcp --dport 3389 -j DNAT --to-destination 7.0.0.2:3389
#$IPT -A OUTPUT -o $LAN -p tcp --sport 3389 -j ACCEPT
#$IPT -A FORWARD -i $WAN -d 7.0.0.2 -p tcp --dport 3389 -j ACCEPT

# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

# Вывод информации о состоянии таблиц.
route -n
$IPT -L
$IPT -L -v -n
$IPT -L -v -n -t nat


С горем пополам читаю два дня все те же горы мануалов смог таки включить ответ по ISMP.

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

Хочется понять принцип... по этому прошу не пинать ногами,не писать "вот это вставь и будет счастье" а постараться объяснить, что делаю не так. Пытаюсь научиться и понять а не просто сделать "продукт".

Какие ошибки допустил, в общем интересно ВСЕ! особенно новые знания.
Ответ:
Сообщение от v-good
Штрудирование мануалов пока не дает результатов, везде по разному пишут, четкую информацию пока найти не смог. Кто обладает ссылкой на доступный, изложенный на более менее понятном языке учебник буду очень рад.
У вас неплохая для перевого раза таблица получилась, написанная в хорошем стиле и даже с комментариями, так что чтение мануалов релультаты даёт. Я бы посоветовал для начала оставить меньшее количество правил, добавляя по необходимости.
Неплохая статья об ИПтаблес есть на Опеннете. Курячий в своём курсе по Линуксу (есть на Интуите) тоже целую главу этому посвящает.
Попробую показать недочёты на примере цепочки форвардинга из таблицы filter.
Сообщение от v-good
# Разрешить форвардинг для новых, а так же уже инициированных
# и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT
# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT
# Открываем RDP
#$IPT -A FORWARD -i $WAN -d 7.0.0.2 -p tcp --dport 3389 -j ACCEPT
Первым правилом вы практически полностью открыли форвардинг, пакеты покидают цепочку, не доходя до других правил.
Кроме того третьим (в этом примере) правилом вы закрыли доступ снаружи во внутренню сеть. Пакеты отбрасываются и до четверного правила не доходят.
В общем: DROP - пакеты немедленно отбрасываются
REJECT - отбрасываются, посылая уведомление по icmp.
ACCEPT - успешно покидают данную цепочку и становятся в очередь в следующую.
Распечатайте схему последовательности прохождения пакетами цепочек и держите на рабочем месте. Я встречал несколько очень наглядных рисунков. Их легко найти через поиск.
Пакеты icmp я бы посоветовал пропускать все.
Сообщение от v-good
Пытаюсь открыть порт и пробросить его на локальный сервер, и никак.
Пробросом порта называют перенаправление пакета на другой адрес в цепочке prerouting таблицы NAT. У вас я не заметил такого правила. Может, плохо смотрел.
Вопрос: Auto indent для Javascript в Emacs. Скобка не встает на свое место

Добрый день! Я потратил около 6 часов на то, чтобы найти хоть какую-то информацию о том, как изменить автоформатирование кода в Emacs для Javascript.

Я хочу, чтобы при написании программ на JS скобки сами вставали на свое место (как это работает в С-подобных языках). У меня в .emacs есть строки
Lisp
1
2
3
(setq c-default-style "bsd"
      c-basic-offset 4)
(global-set-key (kbd "RET") 'newline-and-indent)
Когда я пишу на С, только я напишу "}", как она тут же встает на свое место. Так же и открывающаяся (я пишу в "bsd" стиле aka Олман стайл).

К моему глубочайшему удивлению в емаксе JS не является С-подобным языком, поэтому инструкция c-default-style "bsd" для него не работает.

Ладно бы хоть египетский стиль нормально работал, так нет! Когда я дописываю последнюю строку блока, перехожу на новую строку и ставлю "}", она остается на месте.

Получается что-то вроде:
Javascript
1
2
3
var a = {
    dog: 4
    }
Главное, в интернете вообще нет таких обсуждений. Неужели никто не пишет в Emacs на JS?
Я не понимаю, почему скобка не встает на свое место...

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

Если я что-то непонятно объяснил, спрашивайте, уточню.
Ответ: ferc, и что, нет режима, чтобы в bsd-стиле js форматировать?
Какие режимы использовали в emacs?

-- Попробуйте что-нибудь другое

-- Напишите свой код для отступов

В js-mode emacs корректно расставляет скобки. У Вас сам-то режим включен?
Если нет -- включите сами:
Код
M-x js-mode
Вопрос: Внешний домен "склеился" с localhost

Всем привет!
Такая странная проблема, столкнулась впервые: один сайт, который мне нужно было посмотреть (http://anapatoday.com), некоторое время был недоступен, а потом вдруг неожиданно стал мне выдавать служебную страницу Денвера, как будто я к localhost обращаюсь. Файл hosts проверила - его там нет. Ума не приложу, отчего так происходит.
Через анонимайзер, конечно, можно зайти, но хотелось бы узнать, в чем причина...
Винда 7
Ответ:

Это ответ твоего раутера... уж не знаю что это за раутер там стоит, но он говорит обращаться именно к себе на хост. Пропиши в качестве DNS на своём компьютере DNS адреса провайдера, если не поможет, то какой-то public DNS, например Google 8.8.8.8, раньше был ещё 8.8.4.4 - правда в последнее время не всегда отвечает, так что лучше первый. Если поможет, то пропиши этот DNS на своём раутере, возможно твой провайдер решил запретить тебе таким образом ходить на этот адрес...
Вопрос: Nvidia optimus(bumblebee) для Debian 8 jessie Gnome 3

Было очень много проблем при установке драйверов, сейчас вернулся к тому с чего начал.
Устанавливать драйвера решил когда заметил что панель Docky глючит(вокруг нее красная рамка в режиме 3D).
Мне необходимо в своей работе использовать вычислительную мощность видеокарты для некоторых программ (вроде за это отвечает CUDA, поправьте если не прав), драйвера начал ставить когда обнаружил что панель Docky глючит(вокруг нее красная рамка в режиме 3D). Разработчики Docky писали что проблема в драйверах.

Периодически вовремя установки драйверов(чаще всего в середине всех действий) панель Docky начинала работать нормально, но после окончания установки все становилось также поэтому у меня есть куча вопросов.
  • 1. Как определить какой драйвер сейчас установлен?
  • 2. Сколько различных драйверов есть для nvidia под linux? (Точно знаю что есть nouveau и с официального сайта. Свободные и проприетарные)
  • 3. Сейчас у меня был установлен драйвер с официального сайта, но gdm не хотел запускаться, поэтому я погуглил еще немного. Установил драйвер из репозитория debian заранее добавив contrib non-free. Установщик выдал предупреждение что-то типа "Установлен не свободный драйвер. Он будет удален". contrib non-free разве не означает то, что текущий драйвер тоже не свободный? Или их несколько не свободных?
    Устанавливал пакет bumblee-nvidia, а драйвера похоже по зависимостям подтянулись.
  • 4. В чем разница между xorg-edgers, nouveau, драйвером с официального сайта и драйвером который установился вместе с bumblee-nvidia?
  • 5. Как удостовериться что приложения могут работать через дискретный адаптер с текущими настройками?
  • 6. Как удостовериться что с текущими настройками(драйверами) я могу использовать вычислительную мощность дискретного адаптера для сложных вычислений не относящихся к графике?

Кто может помочь с установкой драйверов вот по этому гайду?
.
Мне кажется он иделаьно подойдет и для работы панели Docky и для выполнения сложных вычислений. Только после моей установки gdm не хотел работать.

Текущие настройки:
Кликните здесь для просмотра всего текста
Код Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
nbome@amine:~$ uname -a
Linux amine 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
 
nbome@amine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.1 (jessie)
Release:    8.1
Codename:   jessie
 
nbome@amine:~$ sudo modinfo nvidia
modinfo: ERROR: Module nvidia not found.
 
nbome@amine:~$ optirun glxspheres64
Polygons in scene: 62464 (61 spheres * 1024 polys/spheres)
Visual ID of window: 0x21
Context is Direct
OpenGL Renderer: GeForce 610M/PCIe/SSE2
107.584046 frames/sec - 103.165785 Mpixels/sec
108.954307 frames/sec - 104.479771 Mpixels/sec
 
nbome@amine:~$ lspci | egrep 'VGA|3D'
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce 610M] (rev ff)
 
nbome@amine:~$ glxinfo | grep -i "direct rendering"
direct rendering: Yes
 
nbome@amine:~$ lsmod | grep nvidia
(НЕ НАЙДЕНО)
 
nbome@amine:~$ lsmod | grep nouveau
(НЕ НАЙДЕНО)
 
nbome@amine:~$ sudo gedit /etc/X11/xorg.conf
** (gedit:21080): WARNING **: Ошибка при получении информации о файле «/etc/X11/xorg.conf»: Нет такого файла или каталога


Файл /etc/bumblebee/bumblebee.conf (комментарии удалил)
Кликните здесь для просмотра всего текста
Код Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[bumblebeed]
VirtualDisplay=:8
KeepUnusedXServer=false
ServerGroup=bumblebee
TurnCardOffAtExit=false
NoEcoModeOverride=false
Driver=nvidia
XorgConfDir=/etc/bumblebee/xorg.conf.d
 
[optirun]
Bridge=auto
VGLTransport=proxy
PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus:/usr/lib/primus:/usr/lib32/primus
AllowFallbackToIGC=false
 
[driver-nvidia]
KernelDriver=nvidia-current
PMMethod=auto
LibraryPath=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/nvidia
XorgModulePath=/usr/lib/nvidia,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia
 
[driver-nouveau]
KernelDriver=nouveau
PMMethod=auto
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau


Файл /etc/bumblebee/xorg.conf.nvidia
Кликните здесь для просмотра всего текста
Код Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Section "ServerLayout"
    Identifier  "Layout0"
    Option      "AutoAddDevices" "false"
    Option      "AutoAddGPU" "false"
EndSection
 
Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"
    BusID       "PCI:01:00:0"
 
    Option "ProbeAllGpus" "false"
 
    Option "NoLogo" "true"
    Option "UseEDID" "false"
    Option "UseDisplayDevice" "none"
EndSection


Файл /var/log/Xorg.0.log
Ответ:
Сообщение от drunkwolfs
1. Как определить какой драйвер сейчас установлен?
lspci -k модуль ядра для вашей видеокарты будет являтся драйвером
Сообщение от drunkwolfs
2. Сколько различных драйверов

есть для nvidia под linux? (Точно знаю что есть nouveau и с официального сайта. Свободные и проприетарные)
nouveau больше подходит для старых карточек, использовать его на новых при наличии вполне качественных драйверов производителя, на мой взгляд, бессмысленно. (Если Вы, конечно, не имеете ничего против самого факта установки проприетарных драйверов )

Сообщение от drunkwolfs
3. Сейчас у меня был установлен драйвер с официального сайта, но gdm не хотел запускаться, поэтому я погуглил еще немного. Установил драйвер из репозитория debian заранее добавив contrib non-free. Установщик выдал предупреждение что-то типа "Установлен не свободный драйвер. Он будет удален". contrib non-free разве не означает то, что текущий драйвер тоже не свободный? Или их несколько не свободных?
Устанавливал пакет bumblee-nvidia, а драйвера похоже по зависимостям подтянулись.
Вся суть дебиана в свободных и стабильных(очень, ОЧЕНЬ стабильных) сборках, поэтому в нем могут быть проблемы совместимости со свежими продуктами. Так же при установке несвободных программ дебиан очень заботливо, по многу раз, предупреждает об этом своего хозяина чтобы он не помутнел рассудком и не перешел на темную сторону пользователей, любящих несвободные продукты

Сообщение от drunkwolfs
4. В чем разница между xorg-edgers, nouveau, драйвером с официального сайта и драйвером который установился вместе с bumblee-nvidia?
В производителе. Возможно, в разном функционале.

Сообщение от drunkwolfs
5. Как удостовериться что приложения могут работать через дискретный адаптер с текущими настройками?
Достаточно проверить, что вы работаете вообще с дискретным адаптером. Не слышал, чтобы была реализована функция переключения видеокарт, тем более в зависимости от используемых приложений (как это сделано для Windows)

Сообщение от drunkwolfs
6. Как удостовериться что с текущими настройками(драйверами) я могу использовать вычислительную мощность дискретного адаптера для сложных вычислений не относящихся к графике?
По-хорошему, прочитайте описалово для установленных драйверов, проблема сводобных драйверов в крайне ограниченном функционале (по сравнению с драйверами произведителя)
Вопрос: Не могу ввести символ '|' в командной строке

Всем привет. Я делаю первые шаги в освоении *nix систем и программировании под них. Столкнулся с такой проблемой. В командной строке не могу ввести символ '|'. У меня стоит Linux Ubuntu 14.04 LTS 32 бита. Пытался менять раскладку клавиатуры на всевозможные разновидности "Британского", но, видимо, не в этом дело. Заранее спасибо за помощь!
Ответ: В языках выберите US,а не UK, это раз. Второе: "труба" находится в правой части клавиатуры "qwerty". И третье: это необходимый символ во многих скриптах-однострочниках, который позволяет использовать конвейеры - передачу вывода одной команды на вход лругой команде в качестве параметров, т.е без него линух - не линух, ибо теряет одну из самых своих замечательных фич - сделать всё в одной строке.
Вопрос: Crontab, at и т.д. Как выполнить файл в терминале?

Здраствуйте!
Скажем у меня есть программа Hello world на С. Как я ее могу выполнить через scheduler? Используя комманды терминала crontab и at я могу только получить отчет на мэйл. А мне надо чтоб она запустилась в терминале. Подскажите, кто знает, пожалуста. :-(
Ответ: Попробовал gnome-terminal и с другой программой, над которой сейчас работаю:

Bash
1
at now <<<"gnome-terminal -e /home/mskopin/Desktop/project_gmar/user_mode/server_tcp_threads"
но она даже в процессах не появилась. Может синтаксис неверный? :-(

Добавлено через 33 минуты
Работает такая команда:

Bash
1
gnome-terminal -e 'bash -c "/home/mskopin/Desktop/chess; exec bash"'
но без

Bash
1
$ at now
Добавлено через 15 минут
УРА !!! Частично заработал такой вариант:

Bash
1
at now <<<'/home/mskopin/Desktop/project_gmar/user_mode/server_tcp_threads'
Программа входит в процессы и запускается. Но внутри нее есть команда system(). Она должна открыть свое окно с сообщением, но оно не открывается. Хотя при запуске без at now все работает отлично. Выкладываю код, на всякий случай:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <pthread.h>
#include <string.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netdb.h>
 
#define MAX_CONNENTIONS 5
 
void* create_listening_server(void* arg);
void accept_connections(int sockin, struct addrinfo *servinfo);
 
void* receive_from_remote_host(void* arg);
 
typedef struct _addr{
    char ip[50];
    char port[10];
} ADDRESS;
pthread_t th1, th3;
 
int main(void)
{
 
    ADDRESS addr;
    int res = -1;
//
    //printf("\nEnter IP address to communicate to: ");
    //fgets(addr.ip, 50, stdin);
    strcpy(addr.ip,"10.0.0.10");
    //addr.ip[strlen(addr.ip) - 1] = '\0';
//
    //printf("Enter port number: ");
    //fgets(addr.port, 10, stdin);
    strcpy(addr.port,"5000");
    //addr.port[strlen(addr.port) - 1] = '\0';
//
    res = pthread_create(&th1, NULL, &create_listening_server, &addr);
    if(res != 0)
        perror("shr: thread create error");
 
    pthread_join(th1,NULL);
//
    printf("main() reporting that all threads have terminated\n");
 
    return EXIT_SUCCESS;
}
 
//----------------- Начало сервера по протоколу TCP ------------------
 
void* create_listening_server(void* arg)
{
// server
    ADDRESS addr = *((ADDRESS*) arg);
    int sockin, sockin_connected;
    struct addrinfo hints, *servinfo;
    struct sockaddr_in client_addr;
    int mytrue = 1, res = -1;
//
    printf("\nserver: IP = %s port = %s\n", addr.ip, addr.port);
    memset(&hints, 0, sizeof hints);
    hints.ai_family   = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_flags    = AI_PASSIVE; // use my IP address
//
    if ((getaddrinfo(NULL, addr.port, &hints, &servinfo)) != 0){
        perror("error getaddrinfo");
        exit(1);
    }
// --------------------------------------------------------------------
    sockin = socket(servinfo->ai_family, servinfo->ai_socktype, 0 );
    if(-1 == sockin){
        perror("shr: error on server socket create");
        pthread_exit(0);
    }
//set the socket options: 
    if (setsockopt(sockin, SOL_SOCKET, SO_REUSEADDR, &mytrue, sizeof(int)) < 0){
         perror("Setsockopt");
         exit(1);
    }
    if (setsockopt(sockin, SOL_SOCKET, 15/*SO_REUSEPORT*/, (const char*)&mytrue, sizeof(mytrue)) < 0) {
        perror("setsockopt(SO_REUSEPORT) failed");
    }
 
    if(-1 == bind(sockin, servinfo->ai_addr, servinfo->ai_addrlen) ){
        perror("shr: error on bind");
        pthread_exit(0);
    }
 
    if (listen(sockin, MAX_CONNENTIONS) == -1){
        perror("shr: error on listen");
        pthread_exit(0);
    }
 
    printf("\nTCPServer: Waiting for client on port %s...\n", addr.port);
    fflush(stdout);
//  
    accept_connections(sockin, servinfo);
    return NULL;
}
 
void accept_connections(int sockin, struct addrinfo *servinfo)
{
    printf("HERE1");
    do{
        struct sockaddr_in client_addr;
        int sockin_connected, res = -1;
 
        sockin_connected = accept(sockin, servinfo->ai_addr, &servinfo->ai_addrlen);
        printf("\n2-socket %d\n", sockin);
        printf("\n3-connected_sock %d\n", sockin_connected);
 
        client_addr = *((struct sockaddr_in *)servinfo->ai_addr);
    
        printf("\nReceived a connection from %s , port %d",inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
 
        res = pthread_create(&th3, NULL, &receive_from_remote_host, &sockin_connected);
        if(res != 0) perror("shr: thread create error");
        sleep(1);
    }while( pthread_join(th3,NULL) );
 
    freeaddrinfo(servinfo);
    close(sockin);
}
 
void* receive_from_remote_host(void* arg)
{
 
    int received_bytes;
    char buf[1024];
    char newbuf[1024];
    int sockin_connected = *((int*)arg);
    printf("\nclient: sockin_connected %d\n", sockin_connected);
    // receive data from remote client:
    do{
        memset(buf, 0, sizeof(buf));
        received_bytes = recv(sockin_connected, buf, 1024, 0);
//
        if(0 == strlen(buf)) continue;
        printf("\nreceived message: %s " , buf);
        fflush(stdout);
        sleep(1);
        if( (strcmp(buf,"Alarm"))==0 ){
            strcpy(buf,"q\n");
            system("gnome-terminal -e "bash -c \'echo Alarm Alarm; exec bash \'""); // Команда, которая не работает!!!
        }
        send(sockin_connected, buf, strlen(buf), 0);
    }while((strcmp(buf , "q\n") != 0 && strcmp(buf , "Q\n") != 0));
    close(sockin_connected);
 
    return NULL;
}
//---------------- Конец сервера --------------------------
Добавлено через 12 часов 4 минуты
Marinero, большое спасибо за вашу помощь. Я наверное неточно сформулировал вопрос. Попробовал переформулировать его в новой теме. Буду рад, если вы мне поможете там.