Tag: Shell

Команды Linux — Системная информация

arch или uname -m — отобразить архитектуру компьютера
uname -r — отобразить используемую версию ядра
dmidecode -q — показать аппаратные системные компоненты — (SMBIOS / DMI)
hdparm -i /dev/hda — вывести характеристики жесткого диска
cat /proc/cpuinfo — отобразить информацию о процессоре
cat /proc/interrupts — показать прерывания
cat /proc/meminfo — проверить использование памяти
cat /proc/swaps — показать файл(ы) подкачки
cat /proc/version — вывести версию ядра
cat /proc/net/dev — показать сетевые интерфейсы и статистику по ним
cat /proc/mounts — отобразить смонтированные файловые системы
lspci -tv — показать в виде дерева PCI устройства
lsusb -tv — показать в виде дерева USB устройства
date — вывести системную дату
cal 2007 — вывести таблицу-календарь 2007-го года
date 041217002007.00* — установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)
clock -w — сохранить системное время в BIOS

Тестирование отправки почты в Django

При написании чего либо где идет отправка электронных писем я вещаю эту задачу на сам python. Тоесть запускаю демон на прослушку порта

python -m smtpd -n -c DebuggingServer localhost:1025

После чего консоль замирает и при отсылке письма django(Й) в консоли вылазит сообщение в формате протокола. Для примера у меня при тестировании регистрации прилетает вот такое сообщение:

---------- MESSAGE FOLLOWS ----------
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Subject: =?utf-8?b?0JDQutGC0LjQstCw0YbQuNGPINCw0LrQutCw0YPQvdGC0LAg4oCTIDEyNy4w?=
 =?utf-8?b?LjAuMTo4ODAw?=
From: info@google.ru
To: mr.kropotov@gmail.com
Date: Fri, 05 Aug 2011 13:16:47 -0000
Message-ID: <20110805131647.2229.25515@macbook.local>
X-Peer: 127.0.0.1

=D0=A0=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D1=8F =D0=BD=
=D0=B0 =D1=81=D0=B0=D0=B9=D1=82=D0=B5
=D0=94=D0=BB=D1=8F =D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=B0=D1=86=D0=B8=D0=B8 =
=D0=B2=D0=B0=D1=88=D0=B5=D0=B3=D0=BE =D0=B0=D0=BA=D0=BA=D0=B0=D1=83=D0=BD=
=D1=82=D0=B0 =D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE =
=D0=BF=D0=B5=D1=80=D0=B5=D0=B9=D1=82=D0=B8 =D0=BF=D0=BE =D1=81=D1=81=D1=8B=
=D0=BB=D0=BA=D0=B5:
127.0.0.1:8800/accounts/activate/a205cae311a087b553d07648522f7730792d29bd/
=D0=A1=D0=BF=D0=B0=D1=81=D0=B8=D0=B1=D0=BE!
------------ END MESSAGE ------------

Установка wget на Mac OS

Скачивай пакет wget от сюда http://ftp.gnu.org/gnu/wget/ (последний пакет wget-1.12.tar.gz)

распаковываем архив и устанавливаем пакет

tar -xvf wget-1.12.tar.gz
cd wget-1.12
./configure
sudo make install

Все wget установлен и работает на ура.

ISPmanager — домен второго уровня «чужому» пользователю

Как известно имея пользователя username_1 и закрепленный за ним домен username1.loc нельзя создать домен второго-третьего-и т.д. домена для «чужого» пользователя — пользователя системы, но не имеющий домен username1.loc.

Да я немного оговорился — в ISPmanager Pro есть такая возможность установив галочку «Разрешить администратору смешивать домены». Но например в моем случае Lite как и у большинства пользователей сети юзающих сервера под этой панелью необходимо законектится по SSH из под рута и отредактировать файл конфига

vim /usr/local/ispmgr/etc/ispmgr.conf

Добавив строку

Option InsecureDomain

после чего перезапустить демон

killall ispmgr

Wget и роботы

Если вам понадобилось сделать локальную копию интересующего вас сайта, то wget будет очень полезен

$ wget -v -m -k -K -E -w 1 -p --output-file=wget.log http://www.developtolive.com/

Но, допустим, картинки вида http://www.developtolive.com/images/supersecret.png не списались и по-прежнему берутся с сайта, то стоит посмотреть на содержимое файла robots.txt. Там может быть запрет на списывание контента роботами:

User-agent: *
Disallow: /images/
...
Host: www.developtolive.com

Это просьба владельца сайта к подобным краулерам не тянуть лишнее. Стоит её уважать. Но если всё-таки хочется переступить через эту просьбу, то можно сказать “-e robots=off” и wget прекрасно всё стянет:

$ wget -v -m -k -K -E -p -e robots=off -w 1 --output-file=wget.log http://www.developtolive.com/

Теперь осталось скормить списанный сайт браузеру или, что более полезно, забросить копию в DocumentRoot web-сервера и наслаждаться результатом.

Лечим кодировку в Midnight Commander

На одной из виртуальных машин поднял образ centos от bitrix с их приблудами, но обещанного mc там небыло. После установки и запуска данного зверька оказалась, что он отображает все в краказябрах. Лечиться это в Midnight Commander следующим образом, очень простым образом=) , выполните из консоли команду

export LANG=ru_RU.koi8r

Ну вот и все, как говорить дабудет счастье=)

 

Создание виртуальных хостов в виртуальной машине Битрикс

Предположим, у нас есть вебсервер с настроенной связкой Apache — Nginx, например, Bitrix Virtual Appliance, и мы хотим сделать на этом сервере дополнительный виртуальный хост (или несколько хостов).

  1. Заведём папку для нашего будущего виртуального хоста. Где она будет находиться — не принципиально. Мне удобнее держать виртуальные хосты в папке /var/vhosts. Допустим, мы создаём хост с именем virtualka1, это значит, что нам надо создать папку /var/vhosts/virtualka1. Внутри нам понадобятся еще 2 папки: www — содержимое этой папки будет доступно из браузера, и log — в этой папке будем держать логии нашей виртуалки. Разумеется все манипуляции делаются от root’а.
  2. Теперь созданную нами папку надо сделать доступной для пользователя bitrix, от которого обычно и осуществляется вся работа с сайтом. Для этого, находясь в папке /var/vhosts, мы выполняем команду
    chown –R bitrix:bitrix virtualka1/

    Теперь пользователь bitrix может делать с этой папкой всё. Для большего удобства, создадим символическую ссылку на эту папку в домашней директории пользователя:

    ln –s /var/vhosts/virtualka1 /home/bitrix
  3. Переходим к настройке серверов Nginx и Apache. Конфиги будем располагать таким образом, что насторйка каждого виртуального хоста будет храниться в отдельном файле в папке sites-available. А в папке sites-enabled будут лежать симлинки на конфиги тех виртуалок, которые нам нужны. Таким образом можно будет легко разобраться где какой конфиг лежит и, при необходимости, отключить ненужные путём удаления симлинка.Nginx

    Находим файл /etc/nginx/nginx.conf и добавляем в самый конец перед закрывающей скобкой } такую строчку:

    include /etc/nginx/sites-enabled/*;

    Это заставит nginx грузить конфиги из папки sites-enabled. Разуемеется папки sites-available и sites-enabled должны существовать в директории /etc/nginx, если их нет, то надо создать. Теперь в папке sites-available создаём файл virtualka1 с таким содержимым:

    server {
      listen 80;
      server_name virtualka1;
      server_name_in_redirect off;
      access_log /var/vhosts/virtualka1/log/nginx_access.log common;
      index index.php;
      error_page 500 502 503 504 /500.html;
      error_page 404 = /404.php;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $host:80;
      client_max_body_size 1024M;
      client_body_buffer_size 4M;
      root /var/vhosts/virtualka1/www;
    
      location / {
        expires 3d;
        proxy_pass http://127.0.0.1:8888;
      }		
    
      location ~ (/|\.php)$ {
        proxy_pass http://127.0.0.1:8888;
      }
    
    }    

    Всё, осталось сделать симлинк на наш конфиг в папку /etc/nginx/sites-enabled/.

    Apache

    Проконтролируем, чтобы в конце файла /etc/apache2/apache2.conf была строчка Include /etc/apache2/sites-enabled/, а так же, чтобы были папки /etc/apache2/sites-available и/etc/apache2/sites-enabled. Если все хорошо, то в папке /etc/apache2/sites-available создаём файлvirtualka1 с таким содержимым:

    <VirtualHost *:8888>
    
      ServerName virtualka1
    
      ServerAdmin webmaster@localhost
    
      DocumentRoot /var/vhosts/virtualka1/www
    
      ErrorLog /var/vhosts/virtualka1/log/apache2_error.log
      CustomLog /var/vhosts/virtualka1/log/apache2_access.log combined
    
    </VirtualHost>
    

    Делаем симлинк на созданный конфиг в папку /etc/apache2/sites-enabled/.

  4. Осталось перезапустить сервера:
    /etc/init.d/nginx restart
    /etc/init.d/apache2 restart
    

Всё, виртуалка должна работать. Проверялось на BVA 1.6.

Есть один нюанс: исходные конфиги виртуалок битрикса намного больше, потому что заточены специально под него (например, там есть специальная настройка для HTML-кэшa). Я повыкидывал из них всё, на мой взгляд, не нужное, ведь у меня на этих виртуалках далеко не всегда крутиться битрикс :)

Для тех, кому лень вручную всё это делать

Мне вот лень, поэтому я написал себе скриптик. В качестве единственного параметра он принимает название виртуалки, оно же название БД, оно же логин к БД и пароль к БД. Да, скрипт автоматически создаёт и базу тоже.

Способ применения:

crSite.sh virtualka1

Не забываем разрешить скрипту исполняться.

crSite

(с)

MacPorts команды

$port list — выводит список всех возможных програм
$port search program_name — поиск по названию програмы
$port info program_name — информация по програме
$port deps program_name — зависимости програмы
$port variants program_name — варианты установки програмы
$sudo port install program_name — установка программы
$port clean —all program_name — удаление исходников программы
$port uninstall program_name — удаление програмы
$port contents program_name — библиотеки и бинарники програмы
$port installed — установленые програмы
$port outdated — выводит установленные програмы которые можно обновить
$port upgrade program_name — обновление програмы
$port upgrade outdated — обновление всех програм
$port dependents program_name — показывает програмы зависимые от program_name

add in $PATH

Как во всем инете пишется добавь в ./profile и будет счастье, да хрен там, что то я его так и не обрел. Я тупо добавляю сюда sudo vi /etc/paths

Синтаксис команды touch

touch [-acfhm] [-r файл] [-t [[CC]YY]MMDDhhmm.[SS]] файл
-a
Устанавливает время последнего доступа к файлу. Время последнего изменения не устанавливается, если явно не задан ключ -m
-c
Указывает утилите не создавать файл, если он не существует, при этом никаких сообщений об ошибке показано не будет.
-f
Пытается обновить информацию о времени, даже если права доступа файла не позволяют делать.
-h
Указывает утилите не изменять данные о файле, если он задан символической ссылкой.
-m
Устанавливает время последнего изменения файла.
-r file
Использовать значения времени из файла, заданного аргументом file.
-t time
Устанавливает время последнего изменения и доступа в соответствии с указанным форматом time.

Формат даты, указанный в ключе -t задается в соответствии с шаблоном [[СС]YY]MMDDhhmm[.SS]:
СС — первые две цифры года (век).
YY — последние две цифры года.
Если параметр CC не задан и значение YY находится в пределах 69 и 99, то тогда СС устанавливается равным 19,
в противном случае используется 20.
MM — двузначный номер месяца.
DD — двузначный номер дня.
hh — значение часов даты.
mm — значение минут даты.
SS — значение секунд даты.

# touch -t 200701310846.26 index.html
# touch -d '2007-01-31 8:46:26' index.html
# touch -d 'Jan 31 2007 8:46:26' index.html