30.09.2008

Джим Рон "НЕ-делание"

Меня часто спрашивают – как я смог придти к успеху за эти шесть лет, хотя многие другие из тех, кого они знают, не смогли. Ответ прост – то, что я считаю легким для выполнения они считают легким для НЕ-выполнения. Я посчитал, что легко установить цели, которые могут изменить мою жизнь. Они посчитали легким НЕ ставить такие цели. Я посчитал легким прочесть книги, которые могут изменить мои идеи и процесс мышления. Они посчитали легким НЕ читать. Я посчитал легким посещать семинары и приблизиться к успешным людям. Они посчитали легким НЕ делать этого. Они сказали, что это, возможно, не имеет значения. Подытоживая, получается, что я решил, что легче делать, в то время как они решили, что легче НЕ делать. Теперь, шесть лет спустя, я миллионер, а они все так же ругают экономику, правительство, политику фирмы-работодателя, и все так же пренебрегают выполнением основных, простейших вещей.



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


Это не из-за недостатка денег – в банках полно денег. Это не из-за недостатка возможностей – Америка и бОльшая часть свободного Мира продолжают предлагать беспрецедентные возможности, бОльшие, чем когда-либо за последние шести тысяч лет. Это не из-за недостатка книг – в библиотеках полно книг – и они бесплатны! Это не из-за школ – в классах много хороших учителей. У нас полно министров, вождей, советников и консультантов.


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


НЕ-делание как инфекция. Оно беспрепятственно распространяется через все системы и ведет к полному разрушению даже потенциальной возможности становления наполненной радостью и процветанием жизни.


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


Так что мой совет – когда есть выбор между «легко сделать» и «легко НЕ сделать» надо не пренебрегать простым, простейшим «легко», но потенциально меняющим жизненную активность и дисциплину.


Для Вашего Успеха,
Джим Рон
www.personal-development.com/jim-rohn/

ПС переводчика:
из википедии - в русском языке слово «грех» очевидно изначально по значению соответствовало понятию «ошибка» (ср. «погрешность», «огреха»). Аналогично греки обозначали понятие греха словом αμάρτημα (αμαρτία), означающим «промах, погрешность, провинность», а иудеи — словом «хэт» (непреднамеренный грех) — «промах». То есть НЕ-делание своего успеха, своей жизни, пренебрежение своим талантом = грех...

Как настроить NAT (транслятор адресов)

На примере настройки ALTLinux Desktop 4
В последнее время у домашних пользователей и в небольших офисах обязательно есть выход в сеть интернет и возникает необходимость подключить несколько ПК к имеющемуся каналу интернет (и как правило, с минимум или без дополнительных затрат на приобретение дополнительного оборудования). Крупные компании и организации могут себе позволить держать в штате системного администратора, мелкие фирмы, а тем более домашние пользователи такого позволить себе не могут и решают такие вопросы, как правило самостоятельно. Если в Windows эта задача опытными пользователями решается достаточно безболезненно, то после перехода на Linux эту задачу можно решить таким образом:


Трансляция сетевых адресов (NAT) это технология которая позволяет отображать IP адреса (номера портов) из одной группы в другую, прозрачно для конечного пользователя.
NAT может использоваться для достижения двух основных целей:
– Использования единственного IP-адреса для доступа в Интернет с нескольких компьютеров;
– Сокрытия внутренней структуры корпоративной сети.

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

Сделайте от имени root:

# service iptables stop
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# service iptables save
# service iptables start
в файле kedit /etc/net/sysctl.conf в строке net.ipv4.ip_forward = 1 (0 сменить на 1)

# chkconfig --list |grep iptables
если выключен iptables (у меня на ALD 4.0.2 был выключен)
# chkconfig iptables on
И будет вам NAT (вместо eth0 подставьте имя своего интерфейса через
который у вас интернет идет). Затем внимательно читаете:
http://www.opennet.ru/docs/RUS/iptables/
http://www.freesource.info/wiki/AltLinux/Sisyphus/admin/etcnet

27.09.2008

Украшаем bash

Bash настраивается редактированием 3х текстовых файлов, которых находятся в домашней папке пользователя:.bash_profile (.profile), .bashrc,.bash_logout.
При отсутствии этих файлов используются настройки по-умолчанию, хранящиеся в файлах
/etc/profile и /etc/bash.bashrc.

~/.bash_profile — читается при каждом входе в систему;
~/.bashrc — читается при каждом запуске дочернего шелла;
~/.bash_logout — читается при выходе из системы.

Таким образом, изменения внесенные в profile будут применены при следующем входе в систему, а в bashrc — при запуске нового терминала.
Частично изменить это можно с помощью команды source /config/file. В этом случае изменения будут применены немедленно.

Кастомизация приветствия
Внешний вид системного приветствия изменяется с помощью изменения значения переменной PS1. Редактировать мы будем ~/.bashrc.

По-умолчанию, системное приветствие выглядит примерно так: user@hostname:~$, что соответствует следующему значению переменной PS1:

PS1='\u@\h:\w$'



Рассмотрим список допустимых параметров:
Параметр Значение
\a an ASCII bell character (07)
\d дата в формате ''День_недели, Месяц, Число''.
\e an ASCII escape character (033)
\h имя хоста до первой точки.
\H имя хоста
\j количество задач, работающих в шелле в настоящее время
\l название терминала
\n переход на новую строку
\r возврат каретки на начало строки
\s название шелла (будет выведено, например, «bash»
\t время в 24-часовом формате (ЧЧ: MM: СС)
\T время в 12-часовом формате (ЧЧ: ММ: СС)
\@ время в 12-часовом формате (AM/PM)
\u имя активного пользователя
\v номер версии bash
\V номер версии bash, номер релиза, номер патча
\w текущая директория (будет выведено в формате /path/to/work_dir_name)
\W имя текущей директории (будет выведено в формате «dir_name\»)
\! номер команды в истории
\# системный номер команды
\$ if the effective UID is 0, a #, otherwise a $
\\ обратный слэш
\[ начало последовательности непечатаемых символов (см. примеры в разделе «Цвета и стилизация».
\] конец последовательности символов
$ ( ) внешняя комманда


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

Пример:
Изменим стандартное приветствие так, чтобы дополнительно выводилась дата в формате (ДД/ММ/ГГГГ).

PS1='[\u@\h] $(date +%m/%d/%y) \w $'



Результат будет выглядеть следующим образом:

[user@host] 08/17/08 /work/dir $



Цвета и стилизация
— Внешний вид и стиль надписей в шелле настраивается с помощью ASCII-свойств.
Рассмотрим следующие таблицы:
Название стиля Код
Сбросить все свойства 0
Повышенная яркость 1
Пониженная яркость 2
Подчеркнутый 4
Нормальная яркость 5
Инвертированный 7
Скрытый 8


Цвета
Название цвета Текст Фон
Черный 30 40
Красный 31 41
Зеленый 32 42
Желтый 33 43
Синий 34 44
Маджента 35 45
Циановый 36 46
Белый 37 47

Свойства текста задаются в формате

[свойство_фона;цвет_фона;свойство_текста;цвет_текста]

.
В случае, если цвет фона менять не надо — первые два параметра можно опустить.

Пример:

\[\033[0;40;4;31m\]vrootmnelogi\[\033[0m\]!!111



Результатом будет
— вывод строки ''vrootmnelogi'' красным подчеркнутым текстом на черном фоне.
— вывод строки ''!!111'' стандартным для терминала шрифтом.

Структура примера:
\[\033[ m\] — устанавливает свойства последующего текста
0;40;4;31 — см. выше
\[\033[0m\] — сбрасывает свойства

Настройка цветного вывода ls
Делается это следующим образом:
1. Открываем ~/.bashrc и дописываем:

if [ «$TERM» != «dumb» ]; then
[ -e «$HOME/.dircolors» ] && DIR_COLORS=«$HOME/.dircolors»
[ -e «$DIR_COLORS» ] || DIR_COLORS=«»
eval «`dircolors -b $DIR_COLORS`»
alias ls='ls —color=auto'



2. Импортируем и открываем для редактирования стандартную цветовую схему:

dircolors -p ~/.dircolors

nano ~/.dircolors


Выгядит она примерно так:

.tgz 01;31
.svgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.lzma 01;31

3. Меняем цвета и стили, сверяясь с таблицей из предыдущего раздела.
4. Сохраняем изменения, запускаем новый шелл.

http://habrahabr.ru/blogs/linux/

Почти мануал ssh

Источник

Во-первых, надо отучить себя набирать пароль каждый раз. Скорее всего, многие в курсе, но на всякий случай: есть хитрая система т.н. SSH-ключей. Инструкция:
1. ssh-keygen -t dsa — тут надо будет уточнить пути к файлам и passphrase. Второе рекомендуется в целях безопасности, вводить часто не придется. У вас появятся два файла: ~/.ssh/id_dsa и ~/.ssh/id_dsa.pub. Первый из них — ваш секретный ключ, никому его не показывайте! Второй — публичный, который полагается класть на удаленные машины.
2. На удаленной машине создайте папку ~/.ssh с правами 700, а в ней файл authorized_keys с правами 600, в который поместите содержимое файла ~/.ssh/id_dsa.pub (ваш публичный ключ).
3. Можно заходить с первой машины на вторую без пароля. Если не получается — проверьте, нет ли в конфиге sshd удаленной машины строки «PubkeyAuthentication no», а также права на все используемые файлы: на .ssh нужны права 700, на все, что в ней — 600.
Во-вторых, изучаем ssh-agent. Он позволяет вводить Passphrase к ключу только один раз (при подгрузке ключа), а не при каждом логине. Плюс еще некоторые бонусы.
1. Удостоверяемся, что запущен ssh-agent: «ps -C ssh-agent». Если нет — запустите через него терминал, например «ssh-agent roxterm»
2. Подгружаем ключ. «ssh-add ~/.ssh/id_dsa», должно ответить, что ключ добавлен. Note: здесть имя файла необходимо указывать, только если оно отличается от дефолтного.
3. Заходим на вторую машину без пароля.
3.9. Говорят, что на OpenBSD надо выставить переменную указывающую на SSH_AUTH_SOCK (что бы это ни значило :) ), иначе агент-форвардинг не работает.
4. Уходим со второй машины и заходим обратно, отдав параметр -A команде ssh. После этого без пароля заходим на третью машину, на которой уже настроена авторизация по ключам. Думаем «ЫЫЫ, прикольно!», ибо на второй-то машине приватных ключей нет!
В-третьих, забываем про флаг -A, поскольку в файле ~/.ssh/config (права 600) пишем строку «ForwardAgent yes»
Если все ваши похождения по SSH заканчиваются на машинах, досягаемых в один прыжок, дальше можно не читать. Для случаев, когда имеется точка входа в сеть администрируемых машин (или даже цепочка из них), рекомендую дочитать.
В-четвертых, настраиваем ssh-proxy.
Ситуация: У меня есть сервер alpha, имеющий адрес alpha.pupkin.net, а также сервер beta с адресом 192.168.1.17, находящийся в сети, доступной с alpha, но недоступной с моей тачки. Причем на локальной машине мой юзер называется david, а на всех остальных — v.pupkin. Я пишу в ~/.ssh/config следующую уличную магию:
Host *
ForwardAgent yes

Host alpha
HostName alpha.pupkin.net
User v.pupkin

Host beta
HostName 192.168.1.17
User v.pupkin
ProxyCommand ssh alpha nc %h %p

Host *.pup
User v.pupkin
ProxyCommand ssh beta nc %h %p

Что происходит: Я дал алиасы машинам alpha и beta, хожу на alpha под правильным юзером по правильному адресу, написав в консоли всего лишь «ssh alpha». Кроме того, набрав на локальной тачке «ssh beta», я попадаю на beta через alpha, для этого в качестве proxy я использую netcat.
Бонус: если на beta доступна сеть с поднятым DNS, в котором есть домен .pup, я автоматически хожу на тачки в этом домене через beta.


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

vi ~/.ssh/config
добавляем строки
host *
controlmaster auto
controlpath /tmp/ssh-%r@%h:%p

В данном случае «host *» означает что этот трюк будет применяться ко всем хостам. Если хотите то можно менять маску по Вашему усмотрению.

Так же частенько бывает ситуация когда нужно соединить 2 машины находящиеся в разных сетях. Например одна машина использует для тестов базу которая находится на сервере в другой сети разделённой интернетом. В таких случаях очень удобно использовать ssh туннели.

ssh -p22 -2 -N -C -f -L 6632:192.168.100.72:66320 tunnel@88.88.88.88

в данном случае
6632 — порт на локальной машине к которому коннектиться чтобы попасть на порт машины в удалённой сети.
192.168.100.72:66320 — ИП адрес и порт машины в удалённой сети.
tunnel@88.88.88.88 — имя пользователя и ИП адрес сервера который находится в удалённой сети и смотрит в интернет через него мы собственно и прокидываем туннель.


22.09.2008

Список консольных команд Linux

Список консольных команд Linux





Операции с файлами


d /home перейти в домашний каталог
cd .. перейти на уровень выше
cd ../.. перейти на 2 уровня выше
cd перейти в домашний каталог
cd – перейти в предыдущий каталог
pwd показать путь к текущей директории
ls показать файлы и директории
ls -F показать файлы и директории
ls -l показать подробности о файлах и директориях
ls -a показать скрытые файлы
mkdir dir1 создать директорию с именем dir1
mkdir dir1 dir2 создать директории dir1 и dir2
mkdir -p /tmp/dir1/dir2 создать директорию в указанном месте
rm -f file1 vудалить файл с именем file1
rmdir dir1 удалить директорию с именем dir1
rm -rf dir1 удалит директорию dir1 и всё её содержимое
rm -rf dir1 dir2 удалить директории dir1 и dir2 со всем содержимым
mv dir1 new_dir переименовать / переместить директорию
cp [что копировать] [куда копировать]
ln -s cоздать символическую ссылку. [На что сделать ссылку] [имя ссылки]

Поиск файлов и директорий



find / -name file1 2>/dev/null искать файлы или директорию начиная с "/" и не выводить ошибки доступа
find / -user user1 искать файлы и директории относящиеся к user1
find /home/user1 -name \*.bin искать файлы с расширением .bin в директории /home/user1
find /usr/bin -type f -atime +100 искать бинарные файлы, которые не запускались 100 дней
find /usr/bin -type f -mtime -10 найти файлы созданные или изменённые за 10 дней
find / -name \*.deb -exec chmod 755 '{}' \; найти файлы с расширением .deb и изменить права доступа
locate \*.ps найти файлы с расширением .ps
whereis halt показать путь к указанной программе, в данном случае halt
which halt показать полный путь к указанной программе, в данном случае halt
find / -name '*html' -print | xargs grep -l 'www.example.com' | less -O pages команда xargs принимает на вход имена файлов от find и последовательно запускает grep -l для обработки каждого файла, вне зависимости от того, сколько файлов нашлось. Команда grep -l печатает имя файла, если в нем удалось в нем обнаружить указанный фрагмент текста, а затем прекращает анализ этого файла. Утилита less позволяет вам просматривать результаты по страницам и сохранить список в файл с названием pages. Результатом работы этой команды будет список файлов, которые содержат строку "www.example.com"


Изменение прав доступа


600 Файл недоступен
644 Доступ всем для чтения (например, документы HTML)
666 Файл может прочитан и модифицирован (для файлов HTML, изменяемых посредством скриптов)
755 Файл может быть прочитан и запущен кем угодно (например, скрипты)
777 Доступен для записи и запуска кому угодно (не рекомендуется)

Перезагрузка и выключение



shutdown -h now выключить систему
init 0 выключить систему
telinit 0 выключить систему
shutdown -h hours:minutes & запланировать выключение системы
shutdown -c отменить запланированное выключение
shutdown -r now перезагрузить систему
reboot перезагрузить систему
logout завершить сессию

Общесистемные



hostname сетевое имя машины
whoami имя текущего пользователя
uname -m покажет архитектуру машины
uname -r версия ядра
sudo dmidecode -q информация об аппаратном обеспечении системы, в соответствии с SMBIOS/DMI.
cat /proc/cpuinfo информация о процесоре
cat /proc/interrupts прерывания
cat /proc/meminfo вся информация которая относится к памяти
cat /proc/swaps вся информация про swap
cat /proc/version версия ядра и другая информация
cat /proc/net/dev сетевые интерфейсы и статистика
cat /proc/mounts смонтированные устройства
cat /proc/partitions доступные разделы
cat /proc/modules загруженные модули ядра
lspci -tv PCI устройства
lsusb -tv USB устройства
date текущая дата
cal календарь и текущий месяц
cal 2008 покажет весь 2008 год
last reboot Покажет историю перезагрузок.
lsmod Отобразит список загруженных модулей ядра.
tail /var/log/dmesg Отобразит сообщения ядра полученные при последней загрузке системы.
tail /var/log/messages Покажет все сообщения о ходе загрузки системы, а также другие сообщения о статусе работающей системы.

Список наиболее важных сетевых портов



21 порт => FTP
22 порт => SSH
23 порт => Telnet
25 порт => Порт SMTP отвечающий за передачу почты
43 порт => Порт клиента WHOIS
53 порт => Система преобразования имени хоста
80 порт => Стандартный порт HTTP Веб севрера
110 порт => Порт POP отвечает за приём почты
995 порт => Защищённое SSL/TLS соединение POP
143 порт => IMAP Протокол приёма почты
993 порт => Защищённое соединение IMAP
443 порт => Защищённое HTTP соединение (SSL для https:// )
3306 порт => Mys QL? Сервер
631 порт => Протоколы сетевой печати
5900 порт => Система удаленного доступа к компьютеру VNC (Virtual Network Computing)

Сеть



iptraf монитор локальной сети с интерфейсом ncurses
ifconfig Показать конфигурацию всех сетевых интерфейсов
ifconfig eth0 Показать конфигурацию сетевого интерфейса eth0
ifup eth0 Активировать сетевой интерфейс eth0
ifdown eth0 Отключить сетевой интерфейс eth0
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 Задать конфигурацию IP адреса
ifconfig eth0 promisc Позволяет получать все пакеты, независимо от того были ли они предназначены для хоста или нет. (Это позволяет анализировать сетевой трафик.)
dhclient eth0 Включить на интерфейсе eth0 режим dhcp
route -n Показать таблицу роутинга
route add -net 0/0 gw IP_адрес_шлюза Задать шлюз
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 настроить статический маршрут для сети 192 .168.0.0/16
route del 0/0 gw IP_адрес_шлюз удалить статический маршрут
echo “1” > /proc/sys/net/ipv4/ip_forward активировать ip маршрутизацию
hostname Показать имя хоста
host www.it-talk.ru Получить IP адрес от хоста и наоборот
whois www.it-talk.ru Опросить WHOIS
nslookup www.it-talk.ru Получить IP адрес от хоста и наоборот через проверку DNS-сервера
ip link show Показать информацию о всех сетевых интерфейсах
ip link show eth0 Показать информацию интерфейса eth0
mii-tool eth0 Показать параметры интерфейса eth0
ethtool eth0 Показать статистику интерфейса eth0
netstat -p --inet Показать активные соединения
netstat -lp --inet Показать прослушиваемые порты в системе (и кто их слушает)

Мониторинг за системными процессами


Узнать, что запущено.
top Отобразит постоянно обновляющийся список работающих процессов.
ps aux Отобразит список работающих в системе процессов и из владельцев.
pstree Отобразит иерархический список запущенных процессов.
free Отобразит информацию об использовании памяти.
free -m Отобразит информацию об использовании памяти в мегабайтах.

Убить процесс.
kill номер_процесса.
Файлы и процессы.
lsof -p $$ Отобразит какой процесс работает с файлом или каталогом.
lsof /home/user1 Отобразит какой процесс работает с файлом или каталогом в конкретной директории.

Работа с дисками



df -h Показать все смонтированные устройства хранения данных
ls -lSr |more покажет все файлы в текущей директории в отсортированном по размеру списке
du -sh dir1 Покажет сколько дискового пространства занимает конкретная директория “dir1″
smartctl -A /dev/hda Вывод информации, поддерживает ли диск SMART.
smartctl -s on /dev/hda Включаем SMART, если выключен.
smartctl -c /dev/hda Проверяем какие возможности SMART поддерживает диск и какие установлены параметры.
smartctl -H /dev/hda Статус состояния диска и список атрибутов проверок.
smartctl -A /dev/hda Статус состояния диска и список атрибутов проверок.
smartctl -t offline /dev/hda Запускаем offline тест.
smartctl -l selftest /dev/hda Смотрим, есть ли ошибки.
smartctl -r ioctl -i /dev/hda Смотрим более детально.
badblocks -v /dev/hda Проводит проверку поверхности диска на читаемость и записываемость.
fsck /dev/hda Проводит проверку диска и пытается по возможности восстановить работоспособность дисковой подсистемы.

Планирование заданий



CronTab – это утилита позволяющая в определенный день и час автоматически запускать различные программы или скрипты.
crontab -e Изменит Ваш crontab файл или создаст новый.
crontab -l Отобразит содержимое существующего crontab файла.
crontab -r Удалит Ваш crontab файл.
crontab -v Отобразит когда в последний раз Вы изменяли свой crontab файла.
Структура файла с заданиями для CronTab.

* * * * * command
- - - - -
| | | | |
| | | | +—– День недели (0 - 6) (Sunday=0)
| | | +——- Месяц года (1 - 12)
| | +——— День месяца (1 - 31)
| +———– Час дня запуска (0 - 23)
+————- Минута часа для запуска (0 - 59)

command запускаемая программа или скрипт.

Значок * задаёт параметр (день, год, месяц, час).

Пример

01 * * * * command запуск программы или скрипта каждый час в одну минуту.

* 6 * * * command запуск программы или скрипта каждый день в 6 часов утра.

Значения могут быть числом, трех-буквенным названием, а так же диапазоном например запись «1-5» в поле day будет означать «с понедельника по пятницу». Значения могут отделяться запятыми: «1,15,31» в поле day будет запускать указанную команду 1-го, 15-го и 31-го числа каждого месяца.
Все пять полей времени допускают использование символа звездочка – «*», который обозначает «использовать любое допустимое значение» для этого поля.
Файлы с заданиями можно найти тут:
/usr/lib/cron
Основной каталог команд, связанных со временем.
/usr/spool/cron/crontabs
Каталог файлов регулярных действий.
/usr/lib/cron/log
Учетная информация.
/usr/lib/cron/cron.allow
Список пользователей, которым разрешено выполнять команду crontab.
/usr/lib/cron/cron.deny
Список пользователей, которым запрещено выполнять команду crontab.

Резервное копирование



Создание полной копии любого каталога, включая символические ссылки, используя команду tar:

tar cf - /path/to/original | (mkdir -p /path/to/copy; cd /path/to/copy; tar xvf -)
Сначала tar архивирует указанный каталог /path/to/original и выводит содержимое архива в stdout, знак переноса (-), используемый с параметром с (создать), направляет вывод в stdout. Команда в круглых скобках - это вложенная оболочка, команды во вложенных оболочках не влияют на работу основной оболочки. Команда mkdir -p создает указанный каталог, включая все промежуточные каталоги, и команда cd переводит оболочку в новый каталог. Вторая команда tar считывает содержимое архива из stdin и извлекает его содержимое в указанный каталог, знак переноса (-) с параметром х (извлечь) заставляет считывать входные данные из stdin.