Компиляция Trinity Core на Ubuntu Server

Устанавливаем необходимые дистрибутивы:
sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core patch wget links zip unzip unrar libncurses5-dev
sudo apt-get install openssl libssl-dev mysql-server mysql-client libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-system-dev libboost-program-options-dev

Добавляем пользователя в системе от имени которого будет запускаться сервер:
sudo adduser trinity

По сути ACE и OpenSSL устанавливаются командами выше, но в случае проблем их можно скомпилировать вручную как указано ниже. Тогда желательно удалить их перед компилированием из системы к примеру такой командой apt-get autoremove libace-dev. Командой apt-cache search ace можно посмотреть какие файлы есть в репозитории Ubuntu и также версию ACE.

Устанавливаем ACE:
wget http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.3.tar.gz
(другие версии: http://download.dre.vanderbilt.edu/previous_versions/)

Распаковываем скачанный архив и открываем директорию:
tar xvzf ACE-6.0.3.tar.gz
cd ACE_wrappers
Создаем каталог для компиляции и открываем его:
mkdir build && cd build
Конфигурируем и устанавливаем:
../configure —prefix=/home/<папка пользователя>/.sys/
make
make install
Возвращаемся обратно в директорию пользователя:
cd ~
Устанавливаем OpenSSL:
Скачиваем последнюю версию с http://openssl.org/source/:
wget http://openssl.org/source/openssl-0.9.8o.tar.gz
Распаковываем скачанный архив и открываем директорию:
tar -xvf openssl-0.9.8o.tar.gz
cd openssl-0.9.8o
Конфигурируем и устанавливаем:
./config —prefix=/home/<папка пользователя>/.sys shared
make
make install
Возвращаемся обратно в директорию пользователя:
cd ~

Загружаем исходники Trinity:
git clone git://github.com/TrinityCore/TrinityCore.git
Для применения своих патчей необходимо до компиляции поместить патч в директорию с исходниками и выполнить команду:
patch -p1 < имя_патча.patch
Открываем директорию с исходниками, создаем каталог для компиляции и открываем его:
cd TrinityCore-master && mkdir build && cd build
Конфигурируем на свое усмотрение (это всего лишь пример):
cmake ../ -DPREFIX=/home/<папка пользователя>/server -DTOOLS=1
или так
cmake ../ -DPREFIX=/home/<папка пользователя>/server -DTOOLS=1-DCMAKE_C_FLAGS=»-O3 -pipe» -DCMAKE_CXX_FLAGS=»${CMAKE_C_FLAGS}» -DDO_RA=1 -DLARGE_CELL=1 -DACE_LIBRARY=/home/<папка пользователя>/.sys/lib/libACE.so -DACE_INCLUDE_DIR=/home/<папка пользователя>/.sys/include/ -DSSLLIB=/home/<папка пользователя>/.sys/lib/libssl.so
Если нужно указываем путь к gcc: -DCMAKE_C_COMPILER=/usr/bin/gcc-4.6
Если нужно указываем путь к g++: -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.6

Параметры которые можно указать при конфигурации:
-DACE_LIBRARY=<путь к библиотеке ACE > (полный путь к библиотеке libACE.so, если ACE установлено «глобально», то данный флаг не применяется )
-DACE_INCLUDE_DIR=<путь к каталогу includes/headers, вашей библиотеки ACE> (полный путь к include директории ACE, если ACE установлено «глобально», то данный флаг не применяется )
-DOPENSSL_LIBRARIES=<путь к библиотеке OpenSSL> (путь к библиотеке OpenSSL library, если OpenSSL установлено «глобально», то данный флаг не применяется )
-DOPENSSL_INCLUDE_DIR=<путь к каталогу include, вашей библиотеки OpenSSL > (путь к каталогу include, вашей библиотеки OpenSSL, если OpenSSL установлено «глобально», то данный флаг не применяется)
-DSCRIPTS Сборка сервера и скриптов.
-DTOOLS Собрать так же и экстракторы карта/коллизии/дбц.
-DUSE_SFMT Использовать SFMT как случайный генератор чисел.
-DWITH_WARNINGS Показывать предупреждения.
-DWITH_COREDEBUG «собрать в дебаге».
-DWITH_SQL Скопировать SQL-файлы в каталог с установленным сервером.
-DPREFIX Задать каталог установки.

Компилируем:
make -j (число ядер процессора + 1) //пример для четырех ядерного процессора: make -j 5
make install
Настраиваем конфиги и переименовываем их:
mv /home/<папка пользователя>/server/etc/worldserver.conf.dist /home/<папка пользователя>/server/etc/worldserver.conf
mv /home/<папка пользователя>/server/etc/authserver.conf.dist /home/<папка пользователя>/server/etc/authserver.conf
Извлечение карт:
После компиляции ядра с использованием флага -DTOOLS=1 в папку bin должны скомпилироваться такие фалы как: mapextractor, vmap3extractor, vmap3assembler. Копируем их в директорию с World of Warcraft и запускаем их по очереди:
./mapextractor
./vmap4extractor
mkdir vmaps
./vmap4assembler Buildings vmaps
После создаем в папке с сервером папку к примеру «data» перемещаем в нее созданные экстракторами карт директории. Прописываем в worldserver.conf путь к данной папке.

Запуск:
auth.sh (путь к данному простому скрипту, в случае правильного запуска, можно сразу поместить в /etc/rc.local для автоматического запуска при старте системы)
#!/bin/bash
while :; do
/home/папкапользователя/server/bin/authserver -c /home/папкапользователя/server/etc/authserver.conf
sleep 10
done

world.sh
#!/bin/sh
while :; do
servlog=’/home/папкапользователя/server/logs/server.log’;
outpatch=’/home/папкапользователя/server/logs/crash/’;
date=`date «+%Y-%m-%d_%H:%M:%S»`;
echo «Server CRASHED !!! Start Bugreport System.» >> $outpatch$date.txt;
echo «Server.log Log FILE Last 30 Lines:» >> $outpatch$date.txt;
cat $servlog | tail -n 30 >> $outpatch$date.txt;
echo «» >> $outpatch$date.txt;
echo «END bugtracker system.» >> $outpatch$date.txt;
/home/папкапользователя/server/bin/worldserver -c /home/папкапользователя/server/etc/worldserver.conf
sleep 20
done
Загрузка баз данных:
Необходимо скачать последнюю официальную компиляцию базы данных с [url=https://github.com/TrinityCore/TrinityCore/downloads]TrinityCore Github Downloads[/url]
Либо YTDB базу подогнанную под TrinityCore http://ytdb.ru/showthread.php?t=5227 (http://svn2.assembla.com/svn/ytdbase/) (http://trinity-core.ru/threads/ytdb-for-trinity-%D1%80%D0%B5%D0%BB%D0%B8%D0%B7%D1%8B.1339/page-5)
Также необходимо скачать все патчи опубликованные после полной версии и залить по очереди. Для YTDB если в архиве больше одного файла, то сначала заливать апдейты от ядра, потом от базы. Для официальной базы они находятся в скачанной ранее директории с исходниками ядра /sql/updates.

Вариант резервного копирования

Напишу ниже простой пример резервного копирования mysql баз данных с помощью mysqldump.

Создаем исполняемый файл и пишем в него строку:

mysqldump -u user -h localhost -pПАРОЛЬ имябазы | gzip -c > /home/backups/mysqldump/имябазы/имябазы_`date +%Y-%m-%d`.sql.gz

Чтобы при дампе базы исключить некоторые таблицы необходимо дописать:
—ignore-table=база.таблица —ignore-table=база.таблица
Чтобы сделать дамп самой структуры без данных:
—no-data
В случае ошибки Mysqldump error 1044: Access denied for user to database when using LOCK TABLES после mysqldump добавить:
—skip-opt.

Mysql пользователю назначим права:

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';

Добавляем ссылку на новый файл в /etc/crontab. Планировщик будет выполнять его каждый день в 4 утра:

0 4 * * * user /home/backups/backups.sh > /dev/null 2>&1

Аналогичным образом можно делать резервные копии директорий, например:

tar -cvjf /home/backups/etc/`date +%Y-%m-%d`_etc.tar.bz2 /etc/
tar -cvjf /home/backups/www/`date +%Y-%m-%d`_www.tar.bz2 /var/www/

Также можно регулярно клонировать github репозитории, например репозиторий Trinity Core:

mkdir /home/backups/trinitycore/`date +%Y-%m-%d`
cd /home/backups/trinitycore/`date +%Y-%m-%d`
wget https://github.com/TrinityCore/TrinityCore/archive/4.3.4.zip
wget https://github.com/TrinityCore/TrinityCore/archive/master.zip

Как удалять старые резервные копии автоматически, чтоб не забивался диск я писал в этой статье — Скрипт удаления старых файлов

Мониторим подключения по SSH через email

Приведу несколько способов как получать оповещения на электронную почту о том что кто-то подключился к серверу по SSH.

ПЕРВЫЙ СПОСОБ:
Текстовым редактором, например nano, откроем файл /etc/ssh/sshrc (в редакторе nano CTRL+X для выхода, а y/n и Enter для сохранения или отмены изменений):

sudo nano /etc/ssh/sshrc

И добавим в него следующий код:

ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
logger -t ssh-wrapper $USER login from $ip
(echo "Subject:login($ip) on server"; echo "User $USER just logged in from $ip";) | sendmail -f server@example.com -t your-email@example.com &

Перезапускать SSH не нужно, уведомления уже должны приходить при подключениях.

ВТОРОЙ СПОСОБ:
Добавляем указанные строки в конфиг /etc/rsyslog.conf (перед каждой строкой прокомментировал суть, данный код позволит отсылать сообщения о неудачных подключениях):

# Подключаем модуль отправки сообщений
$ModLoad ommail
# Указываем адрес почтового сервера
$ActionMailSMTPServer mail.domain.com
# Указываем email с которого будут отправляться сообщения
$ActionMailFrom rsyslog@domain.com
# Указываем email на который будут приходить сообщения
$ActionMailTo test@domain.com
# Указываем тему сообщения
$template mailSubject,"SSH Invalid User %hostname%"
# Указываем содержание сообщения
$template mailBody,"RSYSLOG\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
# Указываем в секундах как часто могут отправляться сообщения
$ActionExecOnlyOnceEveryInterval 10
# Если в логах содержатся указанные в скобках символы, тогда отсылаем сообщение
if $msg contains 'Invalid user' then :ommail:;mailBody

Такой же способ отправки через rsyslog, но отсылаются уведомления об успешных подключениях (код без комментариев как выше):

$ActionMailSMTPServer mail.domain.com
$ActionMailFrom rsyslog@domain.com
$ActionMailTo test@domain.com
$template mailSubject,"SSH Accepted pass %hostname%"
$template mailBody,"RSYSLOG\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 10
if $msg contains 'Accepted password' then :ommail:;mailBody

В итоге при успешном или не успешном подключении к серверу SSH на электронную почту будут приходить сообщения. Аналогичным способом можно анонсировать на email и другие события которые логируются через rsyslog.

Изменение стартовой локации в YTDB 3.3.5a

Приведу пример mysql запросов на изменение стартовой локации для всех рас, на примере указана локация в Даларане.
Координаты в игре вычисляются командой .gps
— меняем стартовую локацию орков:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='2';

— меняем стартовую локацию нежити:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='5';

— меняем стартовую локацию тауренов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='6';

— меняем стартовую локацию троллей:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='8';

— меняем стартовую локацию эльфов крови:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='10';

— меняем стартовую локацию людей:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='1';

— меняем стартовую локацию дворфов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='3';

— меняем стартовую локацию ночных эльфов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='4';

— меняем стартовую локацию гномов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='7';

— меняем стартовую локацию дренеев:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='11';

Так как ДК появится сразу не в своей локации и не будет иметь специализации «Гравирование», то сделаем чтобы ДК всех классов знали это при старте:

INSERT INTO playercreateinfo_spell (race, class, Spell, Note) VALUES
(1, 6, 53428, 'Runeforging'),
(2, 6, 53428, 'Runeforging'),
(3, 6, 53428, 'Runeforging'),
(4, 6, 53428, 'Runeforging'),
(5, 6, 53428, 'Runeforging'),
(6, 6, 53428, 'Runeforging'),
(7, 6, 53428, 'Runeforging'),
(8, 6, 53428, 'Runeforging'),
(10, 6, 53428, 'Runeforging'),
(11, 6, 53428, 'Runeforging');

P.S: Координаты Восточные королевства «Акерус: Черный оплот» (хуz map): 2408 -5633 380 0.

ID тренера для ДК: 29194.

Тестируем пропускную способности сети с помошью Iperf

Iperf — кроссплатформенная консольная клиент-серверная программа — генератор TCP и UDP трафика для тестирования пропускной способности сети.

Команда установки в Ubuntu:

sudo apt-get install iperf

Для вывода справки в консоли набирается команда:

iperf --help

Посмотрим какая версия установилась:

iperf -v

Для тестирования производительности сети выполняются команды:
На сервере:

iperf -s -i1

На клиенте:

iperf -c HOST -t 5

На клиенте из Windows для запуска можно сделать bat файл, команда pause предотвратит закрытие окна:

iperf -c HOST -t 5
pause

Скачать версию для Windows можно на сайте iperf.fr
Если на сервере установлена iperf 2, то аналогичную и скачиваем для Windows. Клиент третей версии у меня не подключился к серверу на второй.

Опишу некоторые опции запуска:
-i (интервал обновления статистики)
-s (запуск в режиме сервера)
-c (запуск в режиме клиента)
-p (ручное указание порта, стандартно 5001 TCP)
-D (запустить сервер как демон)
-t (время теста, стандартно 10 секунд)

Допустим мы запустим сервер как демон:

iperf -s -D

Клавишами Ctrl+C выйдем, сервер останется работать в фоне, чтобы его завершить, посмотрим PID командами и завершим:

sudo ps ax | grep iperf
sudo netstat -tulpn | grep :5001
sudo kill -9 PID

Если используется IPTables, то приведу пример правила разрешающего доступ конкретному IP:

sudo iptables -A INPUT -s 192.168.5.11/32 -p tcp --dport 5001 -j ACCEPT

Запуск сервера Counter-Strike Source на Linux

Создаем и открываем директорию для сервера:

mkdir srcds &amp;amp;&amp;amp; cd srcds

Скачиваем установщик:

wget http://storefront.steampowered.com/download/hldsupdatetool.bin

Разрешаем права на запуск:

chmod +x hldsupdatetool.bin

Запускаем установщик:

./hldsupdatetool.bin

Если не запускается, устанавливаем необходимую библиотеку:

sudo apt-get install lib32gcc1

Разрешаем права на запуск:

chmod +x steam

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

./steam -command update -game "Counter-Strike Source" -dir .

Открываем директорию в которой находится файл запуска сервера:

cd css

Создеем необходимый конфиг server.cfg
Запускаем сервер:

./srcds_run -console -game cstrike +map de_dust -maxplayers 16 -secure -sv_lan 0 -autoupdate +ip айпи -port 27015
Пример запуска через screen:
screen AmdS css /home/папкапользователя/srcds/css/srcds_run -game cstrike +map de_dust -maxplayers 16 -secure -sv_lan 0 -autoupdate +ip айпи -port 27015

Немного консольных команд:

+forward     двигаться вперед
+back     двигаться назад
+moveleft    стрейфиться налево
+moveright     стрейфиться направо
+left     повернуться налево
+right     повернуться направо
+jump     подпрыгнуть
+duck     присесть
+use     использовать
+attack     стрелять, резать ножом
+attack2     альтернативная стрельба / дополнительная функция оружия
+reload     перезарядить оружие
slot1     1-ый слот
slot2     2-ой слот
slot3     3-ий слот
slot4     4-ый слот
slot5     5-ый слот
slot6     6-ой слот
slot7     7-ой слот
slot8     8-ой слот
slot9     9-ый слот
slot10     нулевой слот
cancelselect     отменить
messagemode     говорить всем игрокам
messagemode2     говорить игрокам своей команды
radio1     первая группа радиокоманд
radio2     вторая группа радиокоманд
radio3     третья группа радиокоманд
toggleconsole     открыть/закрыть консоль
chooseteam     выбрать команду, за которую хотите играть
+showscores     показать статистику
drop     выбросить текущее оружие
nightvision     включить/выключить очки ночного видения
impulse 201     нарисовать лого
impulse 100     включить/выключить фонарь
invprev     переключиться на предыдущее оружие
invnext     переключиться на следующее оружие
invlast     переключиться на последнее оружие
buy     включить меню покупки
buyammo1     купить патроны для основного оружия
buyammo2     купить патроны для пистолета
buyequip     купить допольнительное снаряжение
pause     запаузить игру
+voicerecord     использовать голосовую коммуникацию
+commandmenu     показать встроенное VGUI меню
showbriefing     показать брифинг к карте
snapshot     сделать скриншот
quit     выйти из игры

Текст приветствия изменяется в файле motd.txt.
Карты добавляются в папку maps и прописываются в mapcycle.txt и maplist.txt.

Пример server.cfg

//Включение ведения логов
log on
//Записвать в лог баны
sv_logbans 1
//Отображать логи в консоли сервера
sv_logecho 0
//Записывать логи сервера в файл
sv_logfile 1
//Записывать в лог повреждения от: 0 - выкл.; 1 - противников; 2 - своих; 3 - всех.
mp_logdetail 0
// RCON лог
sv_rcon_log "1"
//Разрешить ботам использовать гранаты
bot_allow_grenades 0
//Разрешить ботам использовать пулемёты
bot_allow_machine_guns 0
//Разрешить ботам использовать пистолеты
bot_allow_pistols 0
//Разрешить ботам использовать винтовки
bot_allow_rifles 0
//Разрешить ботам использовать дробовики
bot_allow_shotguns 0
//Разрешить ботам использовать снайперские винтовки
bot_allow_snipers 0
//Разрешить ботам использовать мини-пулемёты
bot_allow_sub_machine_guns 0
//Разрешить NPC на сервере
mp_allowNPCs 1
//Разрешить игрокам после смерти наблюдать за другими игроками
mp_allowspectators 1
//Разрешить автоприцеливание
mp_autocrosshair 0
//Разрешить автокик за убийство игроков своей команды
mp_autokick 0
//Разрешить автоматическую балансировку команд
mp_autoteambalance 0
//Время покупки в минутах
mp_buytime 0.5
//Время таймера бомбы
mp_c4timer 35
//Время в секундах, в течении которого игроки смогут разговаривать между собой после окончания карты
mp_chattime 10
//Колличество разрешённых декалей (спреи, пятна крови, пулевые отверстия)
mp_decals 200
//После смерти экран становится чёрным, не давая игроку смотреть за другими игроками в режиме спектатора
mp_fadetoblack 0
//Получать урон от падения
mp_falldamage 1
//Разрешить фонарик
mp_flashlight 1
//Разрешить переключения камер в режиме спектатора
mp_forcecamera 1
//Максимальное колличество фрагов, при достижении которого определённым игроком карта сменится на следующую
mp_fraglimit 0
//Начальный отсчёт времени в начале каждого раунда (для покупки), в секундах
mp_freezetime 0
//Звуки шагов
mp_footsteps 1
//Разрешить атаковать своих
mp_friendlyfire 1
//Кикает игрока при убийстве заданного лимита заложников
mp_hostagepenalty 0
//На сколько человек в одной команде может быть больше чем в другой
mp_limitteams 1
//Максимальное количество раундов на одной карте
mp_maxrounds 0
//Контролирует информацию которую игрок видит на панели статуса: 0 - все имена; 1 - только имена игроков своей команды; 2 - без имён
mp_playerid 1
//Кикает игроков которые убивают членов своей команды в течении # секунд после перезапуска раунда
mp_spawnprotectiontime 10
//Длина раунда в минутах
mp_roundtime 3
//Начальное колличество денег у игроков
mp_startmoney 800
//Ограничение по времени на карту, в минутах
mp_timelimit 60
//Игрок, убивший товарища по команде, будет убит в следующем раунде
mp_tkpunish 0
//Максимальное количество побед, после которой произойдёт смена карты
mp_winlimit 0
//Ускорение игрока, когда он находится в воздухе (например падает)
sv_airaccelerate 10
//Разрешить загрузку файлов с сервера (например карт)
sv_allowdownload 1
//Разрешить загрузку файлов на сервер (например спреев)
sv_allowupload 0
//Разрешить всем слышать переговоры друг друга по микрофону, вне зависимости от команды
sv_alltalk 1
//Разрешить игровые читы на сервере
sv_cheats 0
//Предписывает ли сервер последовательность файла для критических файлов
sv_consistency 1
//e-mail администратора сервера
sv_contact админ@mail.ru
//Использовать звук шагов при передвижении игрока
sv_footsteps 1
//Коэффициент трения в игре
sv_friction 4
//Уровень гравитации в игре
sv_gravity 800
//Максимальное количество байт в секунду, которое может быть передано сервером (0 - без ограничения)
sv_maxrate 20000
//Максимальная скорость игрока
sv_maxspeed 320
//Максимальное количество обновлений (количество пакетов) которое разрешено на сервере
sv_maxupdaterate 40
//Минимальное количество байт в секунду, которое может быть передано сервером (0 - без ограничения)
sv_minrate 0
//Минимальное количество обновлений (количество пакетов) которое разрешено на сервере
sv_minupdaterate 10
//Разрешить ставить паузу во время игры
sv_pausable 0
//Количество минут на которое банится игрок пытавшийся подобрать rcon пароль к серверу
sv_rcon_banpenalty 15
//Максимальное количество попыток при наборе rcon пароля, после истечения которых игрок будет забанен
sv_rcon_maxfailures 5
//Колличество попыток при наборе rcon пароля во время заданное sv_rcon_minfailuretime, после истечения которых игрок будет забанен
sv_rcon_minfailures 5
//Колличество секунд для определения неверной rcon аутентификации
sv_rcon_minfailuretime 30
//Ускорение при передвижения в режиме spectator
sv_specaccelerate 5
//Разрешить игроку в режиме spectator пролетать через стены и объекты
sv_specnoclip 0
//Скорость передвижения в режиме spectator
sv_specspeed 3
//Собирать статистику использования процессора
sv_stats 1
//Длинна шага в юнитах
sv_stepsize 18
//Минимальная скорость остановки на поверхности
sv_stopspeed 75
//Если сервер не получает отклика от клиента в течении # секунд, клиент отключается от сервера
sv_timeout 540
//Разрешить использование микрофона
sv_voiceenable 1
//rcon пароль для удалённого управления сервером
rcon_password "пароль"
//Загрузка файла banned_ip.cfg со списком забаненых по IP
exec banned_ip.cfg
//Загрузка файла banned_ip.cfg со списком забаненых по имени
exec banned_user.cfg
//Записываем SteamID игроков
writeid
//Записываем IP игроков
writeip
//Имя сервера
hostname "Имя"
//Разрешить доступ к серверу только по локальной сети
sv_lan 0
//Пароль для входа на сервер
sv_password ""
//Регион, место расположения вашего сервера (3 - Европа)
sv_region "3"
//URL для загрузки файлов
sv_downloadurl ""
//Разрешить распрыжку
sv_enablebunnyhopping 0
// 0 = Игроки могут использовать любые скины, модели и звуки
// 1 = Игроки используют только тот контент, который разрешен в pure_server_whitelist.txt
// 2 = Используются только оригинальные файлы SteaM (pure_server_whitelist.txt не подгружается).
sv_pure
// Если 1 и файлы игрока не соответствуют серверным, он будет кикнут.
sv_pure_kick_clients "0"
// Если 1, то сервер будет выдавать сообщение о том, что файлы клиента проверяются.
sv_pure_trace "1"
// 1 = Отключить награды на сервере
sv_nomvp "0"
// 1 = Отключить сбор статистики и награждения достижений.
sv_nostats "0"
// 1 = Отключить режим мести
sv_nonemesis "0"
// 1 = Отключить звук и сообщение, когда игрок бросает гранату
sv_ignoregrenaderadio "0"

Купить клиент игры можно тут: http://store.steampowered.com/app/240/?snr=1_7_suggest__13
Links:
Модуль статистики: http://hlstats-community.org
Античит Zblock: http://zblock.mgamez.eu
Сообщество: http://hlmod.ru
Mani Admin Plugin: http://code.google.com/p/maniadminplugin/source/list
Мониторинг и администрирование http://www.hlsw.org

https://developer.valvesoftware.com/wiki/Command_Line_Options

Использование и настройка CRON

Cron — планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время.

Файл находится по адресу /etc/crontab, именно в него и добавляются строки с командами которые необходимо автоматически выполнять, а также команды можно поместить отдельным файлом в директории /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/, /etc/cron.weekly/.

Пример добавляемой строки в cron:

* * * * * команда

Таблица времени запуска:
— — — — —
| | | | |
| | | | —— День недели (0 — 7) (Воскресенье =0 или =7)
| | | ——- Месяц (1 — 12)
| | ——— День (1 — 31)
| ———— Час (0 — 23)
————- Минута (0 — 59)

Приведу несколько примеров времени выполнения команд:
* * * * * 
Каждую минуту

59 23 31 12 5
За минуту до конца года, если последний день года — пятница

59 23 31 Dec Fri
За минуту до конца года, если последний день года — пятница (еще один вариант записи)

45 17 7 6 *
Каждый год 7-го июня в 17:45

0,15,30,45 0,6,12,18 1,15,31 * 1-5
В 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30, 06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15, 18:30, 18:45, если сейчас 1-е, 15-е или 31-е число любого месяца и только по рабочим дням недели

*/15 */6 1,15,31 * 1-5
В 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30, 06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15, 18:30, 18:45, если сейчас 1-е, 15-е или 31-е число любого месяца и только по рабочим дням недели (еще один вариант записи)

0 12 * * 1-5 (0 12 * * Mon-Fri)
В полдень по рабочим дням

* * * 1,3,5,7,9,11 *
Каждую минуту в январе, марте, мае, июле, сентябре и ноябре

1,2,3,5,20-25,30-35,59 23 31 12 *
В последний день года в 23:01, 23:02, 23:03, 23:05, 23:20, 23:21, 23:22, 23:23, 23:24, 23:25, 23:30, 23:31, 23:32, 23:33, 23:34, 23:35, 23:59

0 9 1-7 * 1 
Первый понедельник каждого месяца, в 9 утра

0 0 1 * * 
В полночь, первого числа, каждый месяц

* 0-11 * *  
Каждую минуту до полудня

30 9 1 * *
1-го числа каждого месяца в 9:30

* * * 1,2,3 *
Каждую минуту в январе, феврале и марте

* * * Jan,Feb,Mar *
Каждую минуту в январе, феврале и марте

0 0 * * * 
Каждый день в полночь

0 0 * * 3 
Каждую среду в полночь

Чтобы результат выполнения команды не приходил на электронную почту в конце команды можно добавить:

 > /dev/null 2>&1

Вот пример строки добавления скрипта /home/user/scrips.sh в Cron для автозапуска каждый день в полночь (файл должен быть с правами на выполнение):

0 0 * * * /home/user/scrips.sh > /dev/null 2>&1

Запускаем голосовой сервер Teamspeak3

Скачиваем дистрибутив сервера Teamspeak3 с официального сайта http://www.teamspeak.com/downloads
Возле кнопки Download есть также кнопка копирования ссылки, после чего можно выполнить загрузку прямо на сервер командой:

wget ССЫЛКА

Посмотреть имя архива и содержимое текущей директории можно командой ls.

Распакуем скачанный архив:

tar jxf teamspeak3-server_linux-amd64-3.0.0.tar.gz

Перейдем в директорию с распакованными файлами:

cd teamspeak3-server_linux_amd64

Если нужно, файл лицензии и фийл конфигурации помещаем в директорию (без файла лицензии доступно только 32 слота).

Запускаем:

./ts3server_minimal_runscript.sh

При запуске выполнятся первоначальные настройки и будет сгенерирован пароль и token, их копируем и сохраняем у себя.
Клавишами CTRL+C можно завершить процесс.

Помещаем другой скрипт запуска в автозагрузку:

/home/ПОЛЬЗОВАТЕЛЬ/teamspeak3-server_linux_amd64/ts3server_startscript.sh start

Пример cfg файлов:
ts3server.ini

machine_id=
default_voice_port=9987
voice_ip=0.0.0.0
licensepath=
filetransfer_port=30033
filetransfer_ip=0.0.0.0
query_port=10011
query_ip=0.0.0.0
dbplugin=ts3db_mysql
dbpluginparameter=ts3db_mysql.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mysql/
logpath=logs
logquerycommands=1

ts3db_mysql.ini

[config]
host=localhost
port=3306
username=teamspeak
password=****
database=ts3db
socket=

Установка и использование Screen

GNU Screen — консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким сессиям в рамках одной сессии.

Проверяем установлен ли в системе Screen:

which screen

Если установлен в строке появится путь установки, например /usr/bin/screenю. Если не установлен, устанавливаем:

sudo apt-get install screen

Чистый запуск Screen:

screen

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

screen команда

Подключение к screen-сессии:

screen –x

Если ни одна сессия запущена, указываем необходимую:

screen –x имясессии

Список запущенных сессий:

screen -ls

Подключение к указанной сессии:

screen -r ИМЯ

Создает сессию с указанным именем:

screen -S ИМЯ

Принудительное завершение сессии:

screen -S ИМЯ -X quit

Опишу возможные комбинации клавиш:
Ctrl + a c — Создать новое окно
Ctrl + a w — Выводит список номеров и заголовков всех окон в нижней строчке экрана
Ctrl + a » — Выводит список всех окон
Ctrl + a Номер окна — Выбор окна по номеру. Например, команда Ctrl + a и 0 делает текущим окно с номером 0
Ctlr + a n — Переключиться на следующее по порядку окно, или на первое окно если мы находились в последнем окне
Ctrl + a p — Переключиться на предыдущее по порядку окно, или на последнее окно если мы находились в первом окне
Ctrl + a ‘ — Вывести приглашение ввода номера окна для переключения
Ctrl + a Ctrl + a — Переключиться на последнее использованное окно
Ctrl + a N — Показать номер и заголовок текущего окна
Ctrl + a A — Установить заголовок текущего окна
Ctrl + a k — Принудительное закрытие окна, например, в случае если приложение не удается закрыть обычным способом
Ctrl + a d (detach) — Отсоединить консольную сессию
Ctrl + a z (suspend) — Отсоединить консольную сессию и оставить ее запущенной как фоновый процесс родительской командной оболочки. В этом случае для восстановления сессии кроме команд описанных ниже могут быть использованы стандартные команды управления фоновыми процессами командной оболочки
Ctrl + a ? — Справка обо всех комбинациях клавиш
Ctrl + a S — Разделить экран на два региона по горизонтали
Ctrl + a | — Разделить экран на два региона по вертикали
Ctrl + a Tab — Переход между регионами