2008-12-11

Как изменить настройки сетевой карты в linux

Вопрос: Как отключить авто-определение сетевых настроек (auto-negotiation) моего серевого интерфейса и установить полу/полно-дуплексный режим из коммандной строки? Как просмотреть текущие настроки?

Используйте ethtool:


ethtool eth0 # показывает текущие настройки


Пример вывода:

Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: No
        Speed: 10Mb/s
        Duplex: Half
        Port: MII
        PHYAD: 32
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000007 (7)
        Link detected: yes

Другие примеры:

ethtool -s eth0 duplex half autoneg off - Выключает автоопределение, включает half-duplex
ethtool -s eth1 duplex full speed 1000 autoneg off - Выключает автоопределение, включает Full Duplex и устанавливает скорость в 1000 Mb/s.

Оригинал: http://www.linuxscrew.com/2008/11/20/faq-how-to-change-duplex-andor-auto-negotiation-nic-settings-in-linux/

2008-12-07

GNU Screen: как "промотать" окно вверх

Screen - очень полезная и удобная утилита. Но при ее использовании часто возникает вопрос: как просмотреть что-то что произошло раньше и не влезает в экран. Стандартные Ctrl+PageUp не работают.

Для того чтобы решить эту проблему, нужно перевести screen в режим копирования сочетанием клавиш Ctrl + a, [ или Ctrl + a, Esc.

После этого можно перемещаться стандартными стрелочками или следующим способом:

h - Передвинуть курсор влево
j - Передвинуть курсор на строку вниз
k - Передвинуть курсор на строку вверх
l - Перевинуть курсор вправо
0 - Передвинуть курсор в начало строки
$ - Передвинуть курсор в конец строки
G - Передвинуть курсор в указаную строку
C-u - Промотать вверх пол страницы
C-b - Промотрать целую страницу вверх
C-d - Промотать вниз пол страницы
C-f - Промотрать целую страницу вниз

Для того чтобы указать количество строк используйте параметр h:


screen -h 5000


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

Оригинал: http://www.linuxscrew.com/2008/11/14/faq-how-to-scrollback-in-gnu-screen/

vi: как вставить в текущий документ вывод любой команды

Очень просто.

Достаточно набрать ":r!<команда>" в командном режиме vi. Это особенно удобно при написании каких-либо отчетов.

© UNIX HOT TIP 2795 - August 28, 2007, http://www.ugu.com/sui/ugu/show?tip.today

2008-12-03

запускать задачу раз в месяц в субботу

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

Это можно сделать в crontab следующим образом

0 23 * * 6 [`date "+%d"` -lt 8] && /path/to/script

Это запустит скрипт в первую субботу месяца в 23:00.

2008-11-21

Monit: простое средство мониторинга

Monit - достаточно простое, но одновременно удобное, достаточно мощное и надежное средства для мониторинга ваших серверов.
Monit умеет мониторить:
  • процессы (наличие, количество потребляемых ресурсов)
  • файлы, директории и файловые системы на изменения (дата создания/изменения, изменения размера и контрольной суммы)
  • сетевые хосты (пинг и коннект на определенный порт по определенному протоколу)
При возникновении проблемы monit отправляет e-mail (шаблоны можно модифицировать) и может перезапустить сервис.
В monit встроен простенький веб-сервер, который позволяет посмотреть состояние объектов мониторинга, включить/выключить определенный объект.
Monit умеет перезапускать сервисы если они падают или не выполняется какое-то условие.

Monit построен с идеей того что система мониторинга должна быть максимально надежной и простой. И это действительно выполняется: на monit можно положиться.

2008-11-04

Смена регистра имен файлов

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

##############################
for file in *
do
 mv $file `echo $file | tr [:upper:] [:lower:]` 2>/dev/null
done
##############################

© UNIX tip #2741

2008-10-31

Блокировка по user-agent в nginx

Некоторое время назад на один из моих серверов повалилась куча запросов с User-agent BTWebClient/1.0 и подобными. Запросов было насколько много, что сервер слег.

Решение оказалось очень простым:

if ($http_user_agent ~ BTWebClient) {
    return 503;
}

2008-10-09

Настройка OpenVPN, VPN через http (https) прокси

В некоторых сетях единственным доступным сервисом является веб через прокси-сервер. Многие сервисы (ssh, почта, некоторые IM) не могут работать через прокси, но существуют способы пробросить vpn на какой-либо удаленных хост.

Итак, после проведения некоторого исследования, выбор пал на openvpn. И вот как я его настраивал:

2008-10-01

Как заставить пользователя сменить пароль при следующем логине

  1. Сначала, заблокируйте аккаунт для того, чтобы предотвратить его использование, пока не будут внесены изменения.
    usermod -L username
  2. Измените дату окончания действия пароля в 0, для того чтобы заставить пользователя сменить его при следующем логине: chage -d 0 username
  3. Разблокируйте аккаунт. usermod -U username
Оригинал: RH Magazine

2008-09-13

Rsync Windows <-> Linux

Часто возникает необходимость делать rsync с или на windows. В этой статье я описываю как запускать rsync с Windows.

1. Установить cwRsync

К сожалению нативной свободной или хотя бы бесплатной версии rsync для Windows не существует. Однако существует сборка rsync с cygwin под названием cwRsync.

Установщик можно скачать отсюда:
http://downloads.sourceforge.net/sereds/cwRsync_2.1.5_Installer.zip?modtime=1220778493&big_mirror=0

2. Добавте $CYGWIN_INSTALL_PATH/bin/ в переменную окружения PATH
Панель управления -> Система -> Дополнительно -> Переменные окружения

3. Решите проблему с не-ascii символами

Вот письмо, опысывающее эту проблему:

>I'm trying to use rsync (version 2.6.9) to back up some files. However, a few 
>of them contain Hebrew characters. While I can back them up, the filenames 
>come through scrambled (I don't have Hebrew characters anymore). I've tried 
>the -8 switch, but that didn't work. Any suggestions?
>
>Background:
>
>The files are created on Windows and saved on a samba share (v3.0.24). I can 
>copy them around in Windows just fine. Konqueror, on the machine the files 
>are physically on shows the file names properly. But when I copy them using 
>rsync, the file names get scrambled (Hebrew characters only; English 
>characters are fine).

I guess you're using cwrsync which uses the cygwin1.dll. The normal release
is not unicode aware and therefore has problems with non-ascii characters.
I also had this problem with German umlauts. There is a unicode-release
of the cygwin1.dll which you can copy over your existing cygwin1.dll.
In my case the problems went away. The characters still look strange when
looked at in Linux (different codepage, encoding...) but at least from the
samba share they're the same.

http://www.okisoft.co.jp/esc/utf8-cygwin/

Т.е. нужно с http://www.okisoft.co.jp/esc/utf8-cygwin/ скачать файл cygwin.dll и заменить им тот, что идет в комплекте с cwRsync.

Готово
Для того чтобы файлы с не-ascii смволами в имене нормально передавались, добавте --iconv=. в опции при вызове rsync.

2008-08-25

Трюки bash

История и bang-bang


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

190  ps axu | grep htt
  191  /www/bin/apachectl start
  192  vi /usr/local/lib/php.ini 
  193  cat /www/logs/error_log 
  194  ps -auxw | grep http
  195  pwd

Ничего удивительного.
Гораздо интереснее то, что называется bang-bang, или команда !!. `!!` означает последнюю команду в истории. Т.е. ввод !! в данном случае аналогичен pwd.
Но и это еще не все. Можно ввести `!<первые буквы команды>`. `!ps` вызовет `ps axu | grep htt`. Но будьте внимательны и сообщайте восклицательному знаку достаточно символов команды. Например !p в данном случае будет аналогично `pwd`, а не `ps axu | grep htt` (поскольку pwd ниже в истории) как возможно хотелось бы.

2008-08-21

Распространение модулей Python (distutils)

Не секрет, что у Python существует огромная стандартная библиотека с кучей модулей. Но кроме нее, существует просто огроменная коллекция модулей в pypi (Python Package Index).
Однако многие начинающие разработчики сталкиваются с проблемой распространения своих модулей. Можно конечно записать их все в архив и дать пользователям точные инструкции, как все это устанавливать. Однако это неудобно как для пользователей, так и для самих разработчиков. В python у этой проблемы есть простое и элегантное решение - создание стандартных пакетов при помощи модуля distutils.

Для модуля distuils есть очень подробная дока под названием Distributing Python Modules, но для первого прочтения и решения проблемы по-быстрому она явно сложновата.

Итак, допустим у нас есть некий проект - библиотека PyFoo. Состоит она из двух файлов и классов: foo.py и bar.py (ну и разумеется пустого файла __init__.py).

2008-08-15

Забудьте man crontab


По какой-то причине администраторы (и я не исключение) постоянно забывают порядок полей в crontab'е и постоянно возвращаются к его мануалу.
Чтобы не терять времени, добавте следующий комментарий в начало вашего crontab:

#minute (0-59),
#|      hour (0-23),
#|      |       day of the month (1-31),
#|      |       |       month of the year (1-12),
#|      |       |       |       day of the week (0-6 with 0=Sunday).
#|      |       |       |       |       commands
0       2       *       *       0,4     /root/bin/logchecker

&copy; Unix Guru Universe: Unix Tip 2588 - February  2, 2007
http://www.ugu.com/sui/ugu/show?tip.today