Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

четверг, 6 июля 2017 г.

SED/AWK — Добавить\Удалить в Конец\Начало Строки


 Оригиналы :

https://www.shellhacks.com/ru/sed-awk-add-end-beginning-line/

https://www.shellhacks.com/ru/remove-first-last-characters-strings-bash/

 

SED/AWK — Добавить в Начало или в Конец Строки


Время от времени возникает необходимость быстро отредактировтаь какой-либой файл.
И само собой разумеется, что для этой работы самыми популярными утилитами командной строки в Linux являются sed и awk — две лучшие программы для обработки текста.
В даной статье вы найдете информацию о том, как добавить какой-либо текст или символ (например запятую) в начало или в конец каждой строки файла с помощью sed и awk.
Также вы узнаете, как превратить несколько строк из файла в одну строку разделенную запятыми.

SED/AWK — Добавить в Начало Строки

Используйте следующие команды, чтобы добавить ПРЕФИКС (какой-то текст или символ) в начало каждой строки ФАЙЛА:
$ awk '{print "ПРЕФИКС"$0}' ФАЙЛ
— или —
$ sed 's/^/ПРЕФИКС/' ФАЙЛ
Дельный Совет: Не будьте занудой! Сделайте ваш Bash скрипты ЦВЕТНЫМ! Пусть он выглядит ВЕЛИКОЛЕПНО! Читать далее →


 

SED/AWK — Добавить в Конец Строки

Используйте следующие команды, чтобы добавить СУФФИКС (какой-то текст или символ) в конец каждой строки ФАЙЛА:
$ awk '{print $0"СУФФИКС"}' ФАЙЛ
— или —
sed 's/$/СУФФИКС/' ФАЙЛ

SED/AWK — Добавить в Начало и Конец

Используйте следующие команды, чтобы добавить какой-то ПРЕФИКС в начало и какой-то СУФФИКС в конец каждой строки ФАЙЛА:
$ awk '{print "ПРЕФИКС"$0"СУФФИКС"}' ФАЙЛ
— или —
$ sed "s/.*/ПРЕФИКС&СУФФИКС/" ФАЙЛ
 
 
 

Удаление Первых и Последних Символов из Строк в Bash


Из данной статьи Вы узнаете как удалить несколько символы в начале кажой строки в Bash и как напечатать часть строки между заданными первым и последним символами, используя команду cut.
Вы также узнаете как удалить последние символы в конце каждой строки с помощью хитрости и команды reverse.
Я создал файл со следующим содержимым и буду использовать его в примерах ниже. Допустим нам необходимо удалить несколько символов с начала и с конца каждой строки этого файла.
$ cat file 12345===I Love Bash===54321 12345===I Love Bash===54321 12345===I Love Bash===54321

Удалить Первые N Символов Каждой Строки

Используйте следующую команду чтобы удалить первые 5 символов каждой строки (удаляем первые 5 символов и печатаем каждую строку, начиная с 6-ого символа):
$ cat file | cut -c 6- ===I Love Bash===54321 ===I Love Bash===54321 ===I Love Bash===54321

Печать Строки Между Заданными Символами

Используйте следующую команду чтобы напечатать содержимое каждой строки между 9-ым и 20-ым символами в Bash:
$ cat file | cut -c 9-20 I Love Bash I Love Bash I Love Bash

Печать Первых N Символов Каждой Строки

Используйте следующую команду чтобы напечатать первые 20 символов каждой строки в Bash:
$ cat file | cut -c 1-20 12345===I Love Bash 12345===I Love Bash 12345===I Love Bash

Удалить Последний Символ Каждой Строки

Используя сочетание команд reverse и cut, мы можем удалять последние N символов каждой строки, как показано ниже. (источник)
Используйте следующую команду чтобы удалить последний символ каждой строки в Bash:
$ rev file | cut -c 2- | rev 12345===I Love Bash===5432 12345===I Love Bash===5432 12345===I Love Bash===5432

Удалить Последние N Символов Каждой Строки

Используйте следующую команду чтобы удалить последние 8 символов каждой строки в Bash:
$ rev file | cut -c 9- | rev 12345===I Love Bash 12345===I Love Bash 12345===I Love Bash
 

среда, 28 декабря 2016 г.

Bacula. Fatal error: Uncaught exception 'Zend_Exception' with message 'Fatal error: Can't connect to SQL server'

Изначально Система резервного копирования строилась по этой статье:


Развертывание Bacula в малом офисе 

Все работает по статье нормально.

НО что у меня объем хранилища 4ТБ, а объем данных более 2 ТБ. В итоге приходится чистить базу и запускать бэкап заново

Однажды после такой чистки получил  ошибку:


Fatal error: Uncaught exception 'Zend_Exception' with message 'Fatal error: Can't connect to SQL server' in /var/www/webacula/html/index.php:178
Stack trace:
#0 {main}
  thrown in /var/www/webacula/html/index.php on line 178

проблема с SQL server
 
проверяем место на жестком диске

user@bacula:/$ df -h
Файл.система                Размер Использовано  Дост Использовано% Cмонтировано в
/dev/mapper/bacula--vg-root    71G          67G     0          100% /
udev                          994M         4,0K  994M            1% /dev
tmpfs                         201M         736K  200M            1% /run
none                          5,0M            0  5,0M            0% /run/lock
none                         1004M            0 1004M            0% /run/shm
/dev/sda1                     236M          35M  189M           16% /boot
overflow                      1,0M            0  1,0M            0% /tmp
/dev/sdb1                     2,5T          62G  2,3T            3% /mnt/bacula
 


подозрительно

/dev/mapper/bacula--vg-root    71G          67G     0          100% /

ищем самую большую папку

user@bacula:/$ sudo du -s * | sort -nr | head

получили 
 
64186796        mnt
2844792         var
870928          usr
213648          lib


user@bacula:/var/lib$ sudo du -s * | sort -nr | head
2373428 mysql
120132  apt
56068   mlocate
34008   postgresql
29968   dpkg
8036    aptitude
3488    aspell
2072    apt-xapian-index
1648    bacula

в итоге нашел файл


user@bacula:/var/lib$ sudo ls -la  /var/lib/mysql/ibdata1
-rw-rw---- 1 mysql mysql 2418016256 дек.  26 17:52 /var/lib/mysql/ibdata1


что такое ibdata1 нашел здесь

Второй параметр – задаёт размещение файла ibdata1 (т.к. путь не указан – будет использоваться “хранилище” MySQL – /var/lib/mysql )

ibdata1 увеличился видимо, когда /mnt/bacula не был примонтирован

не запускался MySql






в итоге удалил 
ibdata1 и логи

после этого 
запускался MySq

но webacula не запустился

было решено пересоздать базу bacula и таблицы webacula по статье

выполнить команды:
 
Если после наших эксперементов нам нужно удалить все тестовые джобы, делаем это так:
$ mysql -u root -p
mysql> drop database bacula;
mysql> quit

$ dpkg-reconfigure bacula-director-mysql
Мы уничтожили базу данных, а затем создали ее вновь. Осталось удалить сами файлы томов.
 и
Далее создаем таблицы Webacula, пользователей и роли:
$ cd install/MySql
$ ./10_make_tables.sh
$ ./20_acl_make_tables.sh


после этого система заработала





четверг, 28 июля 2016 г.

Удаления файла или каталога по маске в Linux

Удаления файла или каталога по маске

Удаляем файлы и каталоги по заданным критериям или маске. Есть несколько вариантов удаления. Прицеп прост, собрать структуру файлов или директорий и удалить.
Для сбора данных как всегда используем команду find, но многие не смотрели ее дополнительных возможностей. Есть ключ -delete с помощь которого можно сразу и удалить выбранные объекты.
Удаляем все файлы (ключ -type f ) с именем упоминание в имени "*text*" в каталоге ./test/:
find ./test/* -type f -name "*text*" -delete
Удаляем все пустые каталоги по маске
find ./test/* -type d -name "*" -empty -delete
А если каталог или директория заполнена прибегаем к команде rm .

Удаление каталога с файлами

Удаляем конкретный каталоги с файлами.
rm -dfR ./test/dir1
Удаляем каталог с файлами по маске
find ./test/* -type d -name "*dir*" | xargs rm -dfR
Приятного использования и удаления.



 источник1

Удалить файлы, содержащие в названии определенный текст можно следующими способами:
1: locate *часть_имени* | xargs rm
2: find . -name "*~" -type f | xargs rm -f


источник2

Предположим что файловая шара Samba находится у нас по адресу: /home/samba/public в которой уже лежат папки и файлы пользователей.
Тогда запрос принимает вид:

find /home/samba/public -type f -name "~$*.*" -delete


"~$*.*" -маска имени файла, если нужно удалить например: файлы mp3, то будет иметь вид "*.mp3", а если требуется удалять приложения, то "*.exe"
Данное задание можно засунуть в Cron и выполнять по ночам, когда сервер не используется.
Решение подходит для всех дистрибутивов Linux.

вторник, 26 июля 2016 г.

Поиск самой большой папки unix, linux

du —max-depth=1 -B M |sort -rn
 
-h -x забыл
-h — human, что бы не в байтах, а в гигабайтах/магабайтах/килобайтах и т.д. писало
-x — одна файловая система, если внутри просматриваемого каталога примонтирован другой диск, то пропускать его
и вместо —max-depth=1, можно писать -d 1

понедельник, 11 июля 2016 г.

понедельник, 30 мая 2016 г.

Ftp за NAT

Ftp за NAT проброс портов и настройка диапазона. 

за основу взята статья

Стандартная задача - пробросить ftp за Nat. Небольшая сложность в том, что нужно кроме 21 порта пробросить диапазон дополнительных портов и настроить сам ftp на указаение данного диапозона и ip внешнего интерфейса.
К примеру, выделим для ftp порт 2100 и 10000-10100
Локальный ftp сервер работает на 192.168.122.100 порт 21.

Тогда настройки iptables для "шлюза":

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 2100 -j DNAT --to-destination 192.168.122.100:21
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 192.168.122.100

И в самом ftp надо указать эти нюансы. В случае vsftpd это делается добавлением строк:

pasv_min_port=10000 ;Указываем используемые сервером порты, первый
pasv_max_port=10100 ;и последний
pasv_address=_внешний_ip_шлюза_

В первом приблежении можно считать настроенным.

 Правила firewall на gate:

$IPT -t nat -A PREROUTING -i $REAL_IF -p tcp -m tcp --dport 60021 -j DNAT --to-destination 192.168.0.57:21

$IPT -t nat -A PREROUTING -i $LOCAL_IF -p tcp -m tcp --dport 60021 -j DNAT --to-destination 192.168.0.57:21

 $IPT -t nat -A PREROUTING -i $LOCAL_IF -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 192.168.0.57

$IPT -t nat -A PREROUTING -i $REAL_IF -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 192.168.0.57



добавить в функцию  на firewallе :
 function default_policy()
{
    /sbin/modprobe ip_conntrack
    /sbin/modprobe ip_conntrack_ftp
    /sbin/modprobe ip_nat_ftp

....
}

 конфиг proftpd:


 Include /etc/proftpd/modules.conf
UseIPv6 off
ServerType standalone
MaxInstances 30
SystemLog   /var/log/proftpd/proftpd.log

TimesGMT off
SetEnv TZ :/etc/localtime


        CharsetLocal KOI8-R
        CharsetRemote CP1251


#UseReverseDNS off

MasqueradeAddress 100.100.100.100

PassivePorts 10000 10100

  <IfModule mod_facts.c>
    FactsAdvertise off
  </IfModule>

ServerName "oen_PR_ftp"
DeferWelcome off
Port 21
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin                    welcome.msg
ListOptions                 "-l"
DenyFilter \*.*/
# Пользователь, под которым будет запускаться FTP-сервер
User proftpd
# Группа, с которой будет запускаться FTP-сервер
Group nogroup
# Маска (права доступа) для файлов (первое значение 022) и каталогов (второе значение 022), создаваемых в каталогах
Umask 022  022
# Разрешить перезаписывать существующие файлы
AllowOverwrite on
# Для каждого пользователя в качестве корневого каталога устанавливаем его домашнюю папку. В этом случае пользователь не сможет выйти выше, т.е. попасть в /var/ftp или /var/ftp/check
DefaultRoot ~

# Настраиваем права доступа к пользовательским каталогам

# для каталога  /ftp/check:
<Directory /var/ftp/check>
# Пусть check имеет полный доступ к своей папке (закачивать файлы, скачивать файлы, создавать папки, удалять )
Umask                022  022
<Limit WRITE>
AllowUser check
</Limit>
</Directory>
# Настраиваем логи
TransferLog /var/log/proftpd/xferlog

# Отключаем проверку командного интерпретатора пользователя
RequireValidShell off
# указываем файл с учетными записями для авторизации пользователей
AuthUserFile        /etc/proftpd/ftpd.passwd
# Include other custom configuration files
Include /etc/proftpd/conf.d/
AllowForeignAddress on








среда, 27 апреля 2016 г.

FTP-сервер (ProFTPd) Ubuntu14.04.2


FTP-сервер (ProFTPd) на Ubuntu 12.04 LTS 

часть 1 проверена на Ubuntu14.04.2

 
Задача: поднять FTP-сервер (возможно, с шифрованием) в локальной сети, а именно установить и настроить ProFTPd на Ubuntu 12.04 LTS
Источники:
1. http://vdsadmin.ru/ftp-proftp-ftpasswd
2. http://www.proftpd.org/docs/
3. http://www.proftpd.org/docs/directives/linked/config_ref_Limit.html
4. http://www.debianadmin.com/list-of-ftp-clients-available-in-linux.htm
5. https://forums.proftpd.org/smf/index.php?topic=1198.0
6. http://www.masterit.ru/5-besplatnyx-sftp-menedzherov-dlya-windows/
7. http://www.coreftp.com/download.html
8. http://proftpd.org/docs/contrib/mod_tls.html
9. sysadmins.ru/topic347156.html
10. http://www.castaglia.org/proftpd/modules/mod_sftp.html

Выполнение:
Часть 1. Ставим простой FTP-сервер на Ubuntu 12.04 LTS
1. Устанавливаем ProFTPd:
sudo apt-get install proftpd-basic
В процессе установки выбираем ответ standalone, т.е. самостоятельный запуск FTP-сервера, а не через суперсервер inetd.
2. Пусть каталоги будущих пользователей будут находится в /home/ftp . Создаем этот каталог:
sudo mkdir /home/ftp
Пусть у нас будут два пользователя: vasya и petr. Для каждого из них заведем отдельную папку в каталоге /home/ftp:
sudo mkdir /home/ftp/vasya
sudo mkdir /home/ftp/petr
3. Перед тем, как создавать пользователей нашего FTP-сервера, необходимо отметить следующее. Поскольку эти пользователи являются виртуальными по отношению к ОС, то возникает проблема обращения к каталогам и файлам FTP-сервера. Предположение о том, что доступ к файлам и каталогам будет осуществлять сам FTP-сервер с именем proftpd и группой nogroup, неверно. При обращении к кокому-либо файлу будет использоваться UID и GID конкретного пользователя FTP-сервера. Поэтому логично будет создавать пользователей с такими же UID, что и у какого-либо реального пользователя в системе, прописанного в /etc/passwd . Далее в качестве такого пользователя возмем сам proftpd . Чтобы узнать его UID, выполним команду:
cat /etc/passwd | grep proftpd
результат будет примерно таким
proftpd:x:110:65534::/var/run/proftpd:/bin/false
Следовательно, пользователей будем создавать с UID 110.
3.1  Создаем пользователей vasya и petr:
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=vasya --shell=/bin/false --home=/home/ftp/vasya --uid=110 --gid=65500
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=petr --shell=/bin/false --home=/home/ftp/petr --uid=110 --gid=65501
3.2 Сменим владельца и группу для всех созданных каталогов, чтобы пользователи FTP-сервера (с UID=110, как мы уже условились) смогли что-либо делать с ними:
sudo chown -R proftpd:nogroup /home/ftp
4. Правим конфигурационный файл /etc/proftpd/proftpd.conf :
Include /etc/proftpd/modules.conf
# Отключаем использование протокола IP v6
UseIPv6 off
# Имя FTP-сервера
ServerName "Ubunftp"
# Режим запуска FTP-сервера
ServerType standalone
DeferWelcome off
# Порт, который будет слушать FTP-сервер
Port 21
# выдавать многострочные сообщения в стандарте RFC 959 или RFC 2228
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
# Таймаут на передачу - вошел и не начал передачу (мс.)
TimeoutNoTransfer 600
# Подвисание во время передачи файлов (мс.)
TimeoutStalled 600
# Таймут бездействия после входа (мс.)
TimeoutIdle 1200
# Сообщение, которое будет показываться пользователю при входе
DisplayLogin                    welcome.msg
ListOptions                 "-l"
# Запретить закачивать файлы, начинающиеся на точку
DenyFilter \*.*/
# Максимальное количество дочерних процессов
MaxInstances 30
# Пользователь, под которым будет запускаться FTP-сервер
User proftpd
# Группа, с которой будет запускаться FTP-сервер
Group nogroup
# Маска (права доступа) для файлов (первое значение 022) и каталогов (второе значение 022), создаваемых в каталогах
Umask 022  022
# Разрешить перезаписывать существующие файлы
AllowOverwrite on
# Для каждого пользователя в качестве корневого каталога устанавливаем его домашнюю папку. В этом случае пользователь не сможет выйти выше, т.е. попасть в /home/ftp или /home/ftp/petr
DefaultRoot ~
# Настраиваем права доступа к пользовательским каталогам
# для каталога  /ftp/vasya:
<Directory /home/ftp/vasya>
# Пусть vasya не сможет редактировать содержимое каталога (закачивать файлы, создавать папки, ...)
<Limit WRITE>
DenyALL
</Limit>
# , но сможет читать файлы
<Limit READ>
AllowUser vasya
</Limit>
# и, как исключение из первого правила, удалять их
<Limit DELE>
AllowUser vasya
</Limit>
</Directory>
# для каталога  /ftp/petr:
<Directory /home/ftp/petr>
# Пусть petr имеет полный доступ к своей папке (закачивать файлы, скачивать файлы, создавать папки, удалять )
<Limit WRITE>
AllowUser petr
</Limit>
</Directory>
# Настраиваем логи
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
# Отключаем проверку командного интерпретатора пользователя
RequireValidShell off
# указываем файл с учетными записями для авторизации пользователей
AuthUserFile        /etc/proftpd/ftpd.passwd
# Include other custom configuration files
Include /etc/proftpd/conf.d/
5. Перезапускаем ProFTPd:sudo service proftpd restart
sudo service proftpd restart
Должно все работать. Проверить работу FTP-сервера можно так:
 
ftp localhost

Дополнительно настраиваем права (иточник)
sudo chmod 440 /etc/proftpd/ftpd.passwd && sudo chown proftpd.root /etc/proftpd/ftpd.passwd
Еще одна возмодная проблема:

The workaround is to edit the service file, to add a retry.
/etc/init.d/proftpd
Find this line:
start-stop-daemon --stop --signal $SIGNAL --quiet --pidfile "$PIDFILE"
Change to this:
start-stop-daemon --stop --signal $SIGNAL --retry 1 --quiet --pidfile "$PIDFILE"
This change solved it for me.


 Часть 2. FTP-сервер с SSL/TLS-шифрованием на Ubuntu 12.04 LTS
 
6. Сейчас можно прикрутить к нашему серверу SSL/TLS-шифрование. Сначала сгенерируем сертификат и ключ:
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/proftpd.cert.pem -keyout /etc/proftpd/proftpd.key.pem
 
7. Теперь отредактируем файл конфигурации /etc/proftpd/tls.conf, но сперва скопируем его, на свякий случай:
cp /etc/proftpd/tls.conf /etc/proftpd/tls.conf.old
  и добавляем в /etc/proftpd/tls.conf следующее: 
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
TLSProtocol                SSLv23
TLSOptions                 NoCertRequest
TLSRSACertificateFile      /etc/proftpd/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/proftpd.key.pem
TLSVerifyClient            off
# если хотите всё таки разрешить обычное соединение, поставьте TLSRequired off
TLSRequired                on

8. В конец конфигурационного файла /etc/proftpd/proftpd.conf добавим строку
Include /etc/proftpd/tls.conf
9. Перезапускаем Proftpd:
sudo service proftpd restart 
Сейчас проверим, работает ли шифрование. Установим ftp-ssl :
sudo apt-get install ftp-ssl
и попробуем подключиться:
ftp-ssl localhost
 Если после ввода логина и пароля выходит приглашение ftp> , значит все работает.
На Windows мне не удалось подключиться к такому FTP ни через Total Commander (с плагинами), ни через FileZilla Client: в /var/log/proftpd/tls.log было видно, что соединение заканчивается с ошибкой
SSL/TLS required but absent on control channel, denying ... command
По видимому, эта ошибка возникала из-за того, что клиент начинал подключаться так, как подключается к обычному FTP, в то время, как требовалось установление SSL/TLS сессии.
 Подключиться смог только CoreFTP. Но для этого пришлось в /etc/proftpd/proftpd.conf добавить следующее: 
<IfModule mod_tls.c>
TLSOptions NoSessionReuseRequired
</IfModule>
Эта опция, как я понял, отменяем требование к клиенту работать в одной продолжиющейся сессии. Клиент может выполнять новую команду, создав новую SSL сессию. Это и делает CoreFTP. На рисунке ниже привожу настройки соединения CoreFTP.
 Часть 3. SFTP-сервер на базе ProFTPd и Ubuntu 12.04 
10. Теперь попробуем приктутить SFTP.
Закомментируем все строки в /etc/proftpd/proftpd.conf, относящиеся к использованию tls, а именно:
#<IfModule mod_tls.c>
#TLSOptions NoSessionReuseRequired
#</IfModule>
...
#Include /etc/proftpd/tls.conf
 Продолжаем реадктировать конфигурационный файл /etc/proftpd/proftpd.conf: добавляем следующее
#Если есть модуль SFTP, то применять следующие настройки 
<IfModule mod_sftp.c>
SFTPEngine            on
SFTPHostKey           /etc/ssh/ssh_host_dsa_key
SFTPHostKey           /etc/ssh/ssh_host_rsa_key
SFTPLog               /var/log/proftpd/sftp.log
SFTPCompression       delayed 
SFTPAuthMethods password # метод авторизации - пароль
</IfModule>
 # запрещаем подключаться всем (DenyALL) для того, чтобы пользователи из /etc/passwd не могли подключаться, и разрешаем пользователям vasya и petr  
<Limit LOGIN>
DenyALL
AllowUser vasya, petr
</Limit>
Проверим как работает:
sftp -P 21 petr@localhost
Если после ввода пароля выходит приглашение sftp> , значит работает. Для того, чтобы удостоверится в том, что сервер пускает только пользователей из файла /etc/proftpd/ftpd.passwd , выполним команду:
sftp -P 21 localhost
Даже если введем верный пароль текущего пользователя, все равно получим отказ
Permission denied, please try again.
При использовании SFTP с Windows-машины уже можно легко подключиться через FileZilla client.

вторник, 26 апреля 2016 г.

total ban list

Список вражеских сайтов

В предыдущем сообщении я писал о том, как настроить squid на блокирование сайтов, перечисленных в текстовом файле. Где такой список взять? Например, там:
1) Список из 2414 сайтов с сайта www.antiporno.org;
2) Список нежелательных сайтов с сайта ru-board.com;
3) http://rejik.ru/
4) http://www.squidguard.org/blacklists.html

А можно  использовать бесплатные DNS серверы NetPolice.ru, а именно:
81.176.72.82
81.176.72.83

Получаем почти 100% защиту от вражеских сайтов. 

понедельник, 7 декабря 2015 г.

Закачиваем в папку с датой файлы



закачиваем в папку  с датой   файлы

How can I make a folder's name the date in bash? 

bash script wget curl download files by date

 

# !/bin/bash

while [ true ]; do
    # create a filename with date and time portion
way=/mnt/timelapse/$(date -I)

curl -s  http://example.com/image.jpg --create-dirs -o $way/k6/k6_$(date -u +"%Y%m%d_%H_%M_%S").jpg


    sleep 1;
done;




вторник, 8 сентября 2015 г.

iptables наброски




Как в iptables пробросить порт?

Есть Linux шлюз надо чтоб с инета был доступен нейкий сервис на внутренней машине
   iptables -t nat -A PREROUTING -p tcp -d 91.195.101.20 –dport 7888 -j DNAT –to-destination 192.168.100.251:7888
   iptables -t nat -A POSTROUTING -p tcp –dst 192.168.100.251 –dport 7888 -j SNAT –to-source 91.195.101.20

Первое правило подменяет ip приёмника на внутренний ип, а второе обратно подменяет ип отправителя на внешний.

среда, 29 июля 2015 г.

check disk spase manualy




df -h /

per folder

du —max-depth=1 -B M |sort -rn
 
-h -x забыл
-h — human, что бы не в байтах, а в гигабайтах/магабайтах/килобайтах и т.д. писало
-x — одна файловая система, если внутри просматриваемого каталога примонтирован другой диск, то пропускать его
и вместо —max-depth=1, можно писать -d 1
 
 + LVM

четверг, 25 июня 2015 г.

Клнирование linux - шлюза (debian)


Клонируем акронисом(для ленивых)

развернули на новое железо

необходимо перенастроить сетевые интерфейсы

проверяем что у нас есть в системе:

Какие сетевые карты есть в системе

Теперь выясним, есть ли вообще у нас сетевые карты в компьютере, введем команду lspci -v, в ответ вы должны получить список многих ваших устройств, сетевой карте соответствуют примерно такой раздел

Обратите внимание, последняя строка это модуль, который использует ваша сетевая карта, иногда эта информация бывает нужна. Если вы хотите увидеть только сетевую карту, примените фильтр grep
# lspci | grep Eth
02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)


Узнаем как называются сейчас наши сетевые интерфейсы
cat /proc/net/dev — сетевые интерфейсы и статистика

Переименовываем наши новые сетевые интерфейсы под старые имена, идем в
 
 sudo vi /etc/udev/rules.d/70-persistent-net.rules

eth3  переименовать в eth0
eth4  переименовать в eth1
eth5  переименовать в eth2
перезагружаемся


меняем MAC -и

Change the MAC address of an Ethernet interface permanently

To permanently change MAC address of an Ethernet interface you need to edit /etc/network/interfaces configuration file and use hwaddress directive:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Network interfaces
allow-hotplug eth0
iface eth0 inet dhcp
  hwaddress ether 08:00:00:00:00:01

allow-hotplug eth1
iface eth1 inet dhcp
Reboot or reconfigure network interfaces by hand:
$ sudo service networking restart


перезагружеемся.
тестим..
еще не проверял

 Литература:



Настройка сетевой карты, краткое пособие для начинающих
Определение аппаратной конфигурации компьютера в Linux 
How to change network interface names permanently in Linux 
How to change the MAC address of an Ethernet interface 

среда, 10 июня 2015 г.

Команда ls


Команда ls – вероятно наиболее используемая команда в любой UNIX-системе. Её предназначение – вывод информации о файлах и каталогах. Дополнительные опции команды позволяют получить более подробную информацию и сортировать её определённым образом.
Далее будут приведены примеры опций и примеры их использования.
-R Рекурсивно обойти встретившиеся подкаталоги.
-a Вывести список всех файлов (без этой опции не выводятся скрытые файлы, имена которых начинаются с точки).
-d Если аргумент является каталогом, то выводить только его имя, а не содержимое. Часто используется с флагом -l для получения сведений о состоянии каталога.
-C Вывод в несколько колонок с сортировкой по колонкам.
-x Вывод в несколько колонок с сортировкой по строкам.
-m Вывод в свободном формате, имена файлов разделяются запятыми.
-l Вывод в длинном формате: перед именами файлов выдается режим доступа, количество ссылок на файл, имена владельца и группы, размер в байтах и время последней модификации (см. ниже). Если файл является специальным, то в поле размера выводится старший и младший номера устройства.
-n То же, что и -l, но идентификаторы владельца и группы выводятся в виде чисел, а не в виде имен.
-o То же, что и -l, но идентификатор группы не выводится.
-g То же, что и -l, но идентификатор владельца не выводится.
-r Изменить порядок сортировки на обратный алфавитный или, при наличии флага -t, сначала выводить более старые файлы.
-t Имена файлов сортируются не по алфавиту, а по времени (сначала идут самые свежие файлы). По умолчанию используется время последнего изменения. См. также флаги -u и -c.
-u Вместо времени последнего изменения использовать время последнего доступа для сортировки (с флагом -t) или для вывода (с флагом -l).
-c Вместо времени последнего изменения использовать время последней модификации описателя файла (т.е. время создания файла, изменения режима доступа к нему и т.п.) для сортировки (с флагом -t) или для вывода (с флагом -l).
-p Если файл является каталогом, то выдавать после его имени символ /.
-F Если файл является каталогом, то выдавать после его имени символ /; если файл является выполняемым, то выдавать после его имени символ *.
-b Выдавать непечатные символы, входящие в имя файла, в восьмеричном виде (ddd).
-q Выдавать непечатные символы, входящие в имя файла, в виде символа ?.
-i Выдавать в первой колонке номера описателей файлов.
-s Выдавать размер файлов в блоках (включая косвенные блоки).
-f Рассматривать каждый аргумент как каталог и выводить его содержимое. Этот флаг отменяет флаги -l, -t, -s, -r и включает флаг -a. Сортировка имен файлов не производится; имена выдаются в таком порядке, в каком они перечислены в каталоге.
Теперь несколько примеров наиболее полезных опций.
Вывести список только каталогов:
# ls -d -1 /home/setevoy/*/
/home/setevoy/Desktop/
/home/setevoy/Downloads/
/home/setevoy/Dropbox/
/home/setevoy/Images/
/home/setevoy/Soft/
/home/setevoy/Temp/
/home/setevoy/VirtualBox VMs/

То же самое, но с использованием “длинного” (полного) вывода о каталогах:
# ls -dl /home/setevoy/*/
drwxr-xr-x  2 setevoy setevoy 4096 May  6 10:22 /home/setevoy/Desktop/
drwxr-xr-x  2 setevoy setevoy 4096 May  5 10:38 /home/setevoy/Downloads/
drwx—— 16 setevoy setevoy 4096 May  6 07:40 /home/setevoy/Dropbox/
drwxr-xr-x  2 setevoy setevoy 4096 May  5 12:00 /home/setevoy/Images/
drwxr-xr-x  2 setevoy setevoy 4096 May  5 18:29 /home/setevoy/Soft/
drwxrwxr-x  2 setevoy setevoy 4096 May  5 20:15 /home/setevoy/Temp/
drwxrwxr-x  4 setevoy setevoy 4096 May  5 19:09 /home/setevoy/VirtualBox VMs/

Ключ -l весьма полезен, так как позволяет проверять владельца и права на файлы/каталоги:
# ls -l
total 32
drwxr-xr-x 2 root root 4096 Aug 23  2012 bin
drwxr-xr-x 2 root root 4096 Aug 23  2012 etc
drwxr-xr-x 2 root root 4096 Aug 23  2012 games
drwxr-xr-x 2 root root 4096 Aug 23  2012 include
drwxr-xr-x 4 root root 4096 May  5 11:13 lib
lrwxrwxrwx 1 root root    9 May  5 10:22 man -> share/man
drwxr-xr-x 2 root root 4096 Aug 23  2012 sbin
drwxr-xr-x 7 root root 4096 Aug 23  2012 share
drwxr-xr-x 2 root root 4096 Aug 23  2012 src

Для вывода информации о скрытых файлах (начинаются с точки) используйте ключ -a:
# ls -la
ls: cannot access .gvfs: Permission denied
total 524
drwxr-xr-x 37 setevoy setevoy   4096 May  6 21:20 .
drwxr-xr-x  3 root    root      4096 May  5 10:25 ..
drwx——  3 setevoy setevoy   4096 May  5 10:39 .adobe
-rw——-  1 root    root       517 May  5 11:53 .bash_history
-rw-r–r–  1 setevoy setevoy    220 May  5 10:25 .bash_logout
-rw-r–r–  1 setevoy setevoy    133 May  5 11:52 .bashrc
drwx—— 17 setevoy setevoy   4096 May  5 18:29 .cache
drwxrwxr-x  3 setevoy setevoy   4096 May  5 10:54 .compiz-1
drwx—— 20 setevoy setevoy   4096 May  6 10:38 .config
drwx——  3 setevoy setevoy   4096 May  5 10:38 .dbus

…
Про ошибку с .gvfs можно почитать в статье ls: cannot access .gvfs: Permission denied.
Кратко остановимся на обозначениях прав доступа и обозначениях файлов/каталогов. Первый символ:
d – файл является каталогом;
b – файл является специальным блочным файлом;
c – файл является специальным символьным файлом;
p – файл является именованным каналом;
– – обычный файл.
Далее следуют три группы символов, обозначающих права доступа – r (read), w (write), x (execute) – чтение, запись в файл/каталог и выполнение соответственно. Тема прав доступа в UNIX весьма обширна, поэтому сейчас не будем вдаваться в подробности.
Открыть для редактирования последний редактировавшийся файл:
# nano file1.txt
# nano file2.txt
# nano `ls -t | head -1`

Обычный вывод ls без ключей выводит все файлы/каталоги одной строкой. Что бы вывести их в колонку – выполняем:
# ls -1
Desktop
Downloads
Dropbox
file1.txt
file2.txt
Images
Soft
Temp
VirtualBox VMs

Ключ -h используется для вывода информации о размере в “человекоудобном” виде, т.е. в Kb, Mb, Gb:
# ls -lh
total 36K
drwxr-xr-x  2 setevoy setevoy 4.0K May  6 10:22 Desktop
drwxr-xr-x  2 setevoy setevoy 4.0K May  5 10:38 Downloads
drwx—— 16 setevoy setevoy 4.0K May  6 07:40 Dropbox
-rw-r–r–  1 root    root       2 May  6 21:06 file1.txt
-rw-r–r–  1 root    root       2 May  6 21:06 file2.txt
drwxr-xr-x  2 setevoy setevoy 4.0K May  5 12:00 Images
drwxr-xr-x  2 setevoy setevoy 4.0K May  5 18:29 Soft
drwxrwxr-x  2 setevoy setevoy 4.0K May  5 20:15 Temp
drwxrwxr-x  4 setevoy setevoy 4.0K May  5 19:09 VirtualBox VMs

Отсортировать файлы/каталоги по их размеру, начиная с самого большого:
# ls -lS /var/log/
total 4152
-rw-r–r– 1 root              root 1823273 May  6 19:46 dpkg.log
-rw-r—– 1 syslog            adm   825505 May  6 08:05 syslog.1
-rw-r—– 1 syslog            adm   589203 May  6 19:25 kern.log
-rw-r–r– 1 root              root   47105 Aug 23  2012 bootstrap.log
-rw-r–r– 1 root              root   37440 May  6 19:46 aptitude
-rw-r–r– 1 root              root   20584 May  6 07:39 pm-powersave.log
-rw-r—– 1 root              adm    14329 May  5 11:38 dmesg.1.gz
-rw-r–r– 1 root              root    6167 May  6 07:39 kdm.log
drwxr-xr-x 2 root              root    4096 May  5 10:25 apt
-rw-r—– 1 root              adm       31 Aug 23  2012 boot
-rw-r—– 1 syslog            adm        0 May  5 10:38 ufw.log

Осотрировать файлы/каталоги по дате последней модификации, новые – в конце списка:
# ls -rtl /var/log/
total 4152
drwx—— 2 speech-dispatcher root    4096 Feb  6  2012 speech-dispatcher
drwxr-xr-x 2 root              root    4096 Mar 12  2012 unattended-upgrades
…
drwxr-xr-x 2 root              root    4096 Aug 10  2012 dist-upgrade
…
-rw-r–r– 1 root              root   47105 Aug 23  2012 bootstrap.log
…
-rw-r–r– 1 root              root    2990 May  5 19:20 fontconfig.log
…
-rw-r—– 1 syslog            adm    60874 May  6 21:14 syslog

Что бы вывести новые в начале списка – используйте комбинацию опций без ключа -r:
#  ls -tl /var/log/
То же самое, но сортировать по дате последнего доступа к файлу, а не дате его модификации, используйте ключ -u:
#  ls -tlu /var/log/
Вывести список файлов/каталогов, разделённый на 5 колонок, разделённых на всю ширину окна:
# ls /usr/local | pr -T5 -W$COLUMNS
bin                                            games                                          lib                                            sbin                                           src
etc                                            include                                        man                                            share

Добавлять символ обозначения принадлежности файла/каталога – каталог (/), исполняемый файл (*), FIFO (|), символьная ссылка (@), сокеты семейства AF_UNIX (=):
# ls -F -1
Desktop/
Downloads/
Dropbox/
file1
file1.txt
file2
file2.txt
file3
file4.txt@
Images/
Soft/
Temp/
VirtualBox VMs/

Впрочем, ту же информацию выводит и ls -l – первый символ d для каталогов (directory) и ->; для ссылок:
# ls -l
total 36
drwxr-xr-x  2 setevoy setevoy 4096 May  6 10:22 Desktop
…
lrwxrwxrwx  1 root    root       9 May  6 21:20 file4.txt -> file1.txt

Выводить список через запятую:
# ls -m
Desktop, Downloads, Dropbox, file1, file1.txt, file2, file2.txt, file3, file4.txt, Images, Soft, Temp, VirtualBox VMs

Вывести список рекурсивно, включая подкаталоги и их содержимое:
# ls -R
.:
Desktop
Downloads
Dropbox
Images
Soft
Temp
VirtualBox VMs

./Desktop:
PDF-Viewer.desktop
PDF-Viewer.lnk

./Downloads:
./Dropbox:
172210-1920×1080.jpg
271027-1366×768.jpg
…

Остортировать файлы/каталоги в обратном алфавитном порядке:
# ls -r
VirtualBox VMs  Temp  Soft  Images  file4.txt  file3  file2.txt  file2  file1.txt  file1  Dropbox  Downloads  Desktop

Вывести информацию о номерах inode файлов и каталогов:
# ls -i -1
2368762 Desktop
1969746 Downloads
1987155 Dropbox
1987223 file1
1969890 file1.txt
1987865 file2
1969805 file2.txt
1987866 file3
1987863 file4.txt
1969751 Images
2141585 Soft
2368300 Temp
2141811 VirtualBox VMs

Вывести информацию о пользователе/группе в виде UID и GID, вместо символьных имён:
# ls -n
total 36
drwxr-xr-x  2 1000 1000 4096 May  6 10:22 Desktop
drwxr-xr-x  2 1000 1000 4096 May  5 10:38 Downloads
drwx—— 16 1000 1000 4096 May  6 07:40 Dropbox
-rw-r–r–  1    0    0    0 May  6 21:10 file1
-rw-r–r–  1    0    0    2 May  6 21:06 file1.txt
-rw-r–r–  1    0    0    0 May  6 21:10 file2
-rw-r–r–  1    0    0    2 May  6 21:06 file2.txt
-rw-r–r–  1    0    0    0 May  6 21:10 file3
lrwxrwxrwx  1    0    0    9 May  6 21:20 file4.txt -> file1.txt
drwxr-xr-x  2 1000 1000 4096 May  5 12:00 Images
drwxr-xr-x  2 1000 1000 4096 May  5 18:29 Soft
drwxrwxr-x  2 1000 1000 4096 May  5 20:15 Temp
drwxrwxr-x  4 1000 1000 4096 May  5 19:09 VirtualBox VMs


http://rtfm.co.ua/komanda-ls-primery-ispolzovaniya-i-opcii

вторник, 9 июня 2015 г.

Cacti - Monitor linux processes

Net-SNMP allows you to add linux processes to snmpd.conf.
This way it will make a table visible to SNMP with the number of times this process runs and the min and max allowed occurrences set for this process.

In snmpd.conf add a line : proc NAME [MAX=0] [MIN=0]

for example : proc mpd 2 0

This will load the .iso.org.dod.internet.private.enterprises.ucdavis.prTable as follows :
  • Process name : prNames.index : mpd
  • Process Min Value  : prMin.index : 0
  • Process Max Value : prMax.index : 2
  • Process Count : prCount.index : the number of times this process is running.
This allows us to create a data query against this table and graph out the values :
snmpd.conf entry : proc mpd 1 1
current status : 1 occurrence of the process

snmpd.conf entry : proc ntalkd 4
current status : process not running
Using the values from snmpd.conf for min and max allows us to have the server admin set min and max values and have the people managing cacti or other monitoring tools set thresholds from the information received by snmp.  And when the server admin changes values our graphs still looks pretty.
Templates can be downloaded from the cacti forum : http://forums.cacti.net/viewtopic.php?p=248985#p248985
http://www.routerjanitor.com/2014/04/cacti-monitor-linux-processes.html