rm -r /var/lib/apt/lists/*Translation*
Удаление ненужных переводов (translations) при обновлении пакетов в Debian 7 Wheezy
rm -r /var/lib/apt/lists/*Translation*
Linux related stuff
По умолчанию для подсети 192.168.2.0/24 пакеты идут через интерфейс 192.168.1.2, но мы хотим, чтобы поле src пакетов для определенного dst (в нашем примере – это хост 192.168.2.10) было 192.168.1.3.
Для этого не применяя iptables (который работает на сетевом уровне (Network Layer) модели OSI), можно применить команду ip route, которая всё сделает быстрее, на Link Layer’e:
ip route add 192.168.2.10/32 via 192.168.2.1 dev eth0 src 192.168.1.3
dpkg -i somepackage.deb
Теперь установим не удовлетворенные зависимости с помощью команды:
Поможет в этом следующая консольная команда:
ps auxw | grep postgres | grep — -D
eject /dev/cdrom
Если, при этом выдаётся следующая ошибка:
eject: unable to eject, last error: Inappropriate ioctl for device
То нужно попробовать следующую последовательность команд:
file /dev/sr0
Конфигурационных файлов в /etc он не имеет, в init.d его тоже нет. Чтобы его настроить делаем следующее:
1. Нужно дописать опцию Enable=true в секции “xdmcp” конфига /etc/gdm3/daemon.conf для Gnome 3.
2. Заходим в консоль под нашим десктопным пользователем и вызываем окно настроек Vino:
vino-preferences
Откроется окно вроде такого:
Где указываем отмечаем галочки и устанавливаем пароль.
Также в опции vino можно зайти через апплет Desktop Sharing или Remote Desktop (смотря какой дистрибутив).
Если отметить опцию Configure network automatically to accept connections, то vino будет открывать порт на роутере (если там разрешен UPnP) 5900 наружу, в Интернет, что обычно не желательно.
3. Запускаем собственно демона:
export DISPLAY=:0.0
xhost +/usr/lib/vino/vino-server &
netstat -nl | grep 5900
Последняя команда служит для проверки того, что vino запустился и слушает порт 5900.
4. Теперь с другой машины, которая имеет доступ к нашей пробуем подключиться (для Windows это можно сделать при помощи бесплатных программ TightVNC или UltraVNC).
Настройки по-умолчанию должны сработать.
5. Теперь проблема в том, что vino не стартует со стартом системы и не имеет скрипта запуска. И стартовать он должен с тем пользователем, на который планируется удалённый вход. Для этого нужно добавить в файл /home/username/.bashrc в конец следующие строчки:
export DISPLAY=:0.0
/usr/lib/vino/vino-server &
UPDATE:
Обнаружил, что при таком тексте .bashrc каждый раз, когда открываешь терминальную сессию, то vino ругается в консоль, что он уже запущен. Посему необходимо изменить текст на следующий, включающий в себя проверку:
export DISPLAY=:0.0
ps cax | grep vino-server > /dev/null
if [ $? -ne 0 ]; then
/usr/lib/vino/vino-server &
fi
Ссылки:
то, здесь обычно 2 варианта:
1. Проверим, что проблема действительно в настройках SeLinux:
tail -f /var/log/audit/audit.log |grep -i avc
Должны периодически добавляться в лог строки вроде этой:
В общем, от философии к делу.
Для установки X-сервера в RHEL-подобных ОС Linux (Oracle Linux, RedHat, CentOS, Fedora), которые были установлены без Xorg достаточно выполнить команду:
yum groupinstall “GNOME Desktop Environment” “X Window System” “Desktop”
В большинстве случаев создавать/редактировать конфигурационные файлы не понадобиться. Колдовать с конфигом Xorg придётся в случае нестандартных драйверов, режима нескольких мониторов и т. п., что не есть наш случай просто временной установки X-сервера. Запускаем X-сервер:
startx
Далее логинимся, делаем своё черное дело и после этого можно так же легко удалить X сервер вместе со всеми его пакетами:
yum groupremove “GNOME Desktop Environment” “X Window System” “Desktop”
В данной статье я рассмотрю работу с библиотекой mechanize, т. к. именно ее инструменты помогли мне “победить” задачу автоматизации скачивания материала с одного веб-сайта.
Суть проблемы я буду излагать достаточно пространно, т. к. не могу приводить здесь конкретный пример, но надеюсь – вам будет примерно понятно.
Проблема заключалась в следующих моментах:
Итак, начнемс. Вначале импорт необходимых библиотек. Mechanize не идет в стандартной поставке с Python и его необходимо установить или с помозью PiPy или вручную, как написано на официальном сайте (python setup.py install).
import cookielib, shutil, os
from mechanize import Browser
Далее, создаем объекты: основной Browser и объект для хранения кукисов, который прикрепляем к нашему Browser. Объект Browser представляет собой контейнер по смыслу похожий на вкладку настоящего браузера. Т. е. в пределах его можно оществлять навигацию по web-сайту, авторизацию, хранить кукисы и т. д.
br = Browser()
# Create cookie jar and attach it to Browser
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
Затем, добавляем html хэдэры и открываем URL нужной странички в объекте Browser.
# Add some headers
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
# Open url in Browser instance
br.open('http://www.example.com/download.aspx')
Далее выбираем форму, в которую будем вносить данные. nr=0 – индекс формы по счету в коде веб-страницы (0,1,2 …) И вводим данные в поля для авторизации в формате (для элементов типа TextControl):
br[“id_html_элемента”] = “Значение”
id элементов и возможные значения можно посмотреть двумя способами:
import cookielib
from mechanize import ParseResponse, urlopen
response = urlopen("http://www.eoddata.com/download.aspx")
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]
print form
Вы получите список всех элементов формы и их возможных значений в формате:
<Тип(id=список_значений)>
Вроде такого:
<aspnetForm POST http://www.example.com/download.aspx application/x-www-form-urlencoded
<SelectControl(ctl00$DataFormat=[17, 2, 36, 16, 27, 28, 33, 32, 8, 24, 35, *9, 1, 39, 11, 14, 6, 5, 4, 12, 3, 26, 15])>
<SubmitControl(ctl00$Download=Download) (readonly)>
<TextControl(ctl00$txtEmail=)>
<PasswordControl(ctl00$txtPassword=)>
<CheckboxControl(ctl00$Remember=[on])>
<SubmitControl(ctl00$btnLogin=Login) (readonly)>>
Итак, пример кода основного скрипта для авторизации:
# Select form for modification and "enter" login info
br.select_form(nr=0)
br["ctl00$txtEmail"] = "User"
br["ctl00$txtPassword"] = "Secret"
# Submit form
br.submit(nr=3)
Обратите внимание на строку
br.submit(nr=3)
В скобках указан номер кноки типа Submit по порядку её нахождения в html-коде страницы. Это важно, если в форме есть несколько кнопок типа Submit, но выполняющих различные функции (как в нашем случае). Нумерация 0,1,2…
Далее, выбираем необходимые данные в списках значений, например (значения посмотреть описанными выше методами):
br.select_form(nr=0)
# Select Options
br["ctl00$cboSomething"] = ["EXAMPLE",]
br["ctl00$cboDataFormat"] = ["11",]
# Update page
br.submit(nr=1)
После этого парсим код страницы для получения ссылки на файл. В каждом конкретном случае парсинг будет, конечно же, разным – потому не привожу его здесь.
Скачиваем файл (считая, что искомый URL на файл находится в переменной download_url):
local_path = "/home/user"
filename = "very_important.txt"
f = br.retrieve(download_url)[0]
# Copy saved file to normal location
shutil.copy2(f,os.path.join(local_path, filename))
Ссылки:
aptitude install cpufrequtils
Он запустится и по-умолчанию в нем настроен т. н. governor (регулятор) управления частотой ondemand. Регуляторы бывают:
Задать регулятор можно в файле /etc/default/cpufrequtils (если его нет, нужно создать), например:
# valid values: userspace conservative powersave ondemand performance
Также не забываем включить демона в автозагрузку:
update-rc.d cpufrequtils defaults
Для Gnome 3 shell можно установить дополнение, которое будет показывать в верхней строке состояния текущую частоту и даст возможность менять регулятор “на лету” мышкой.
Заходим сюда – https://extensions.gnome.org/extension/47/cpu-frequency/ и включаем регулятор вверху справа в On.
Этим мы установим дополнение, но активировать его нужно в апплете Advanced Settings (пакет gnome-tweak-tool):
Результат:
Ссылки: