Использование xhost в Unix/Linux
Данная утилита имеет следующий синтаксис:
$ xhost remote_host_name ...]
Опции:
- -help — Служит командой для вывода помощи по командам и опциям.
- +name — Добавляет «name» (название IP или хостнейма) в список, кто имеет право подключаться к X-серверу.
- -name — Удаляет «name» (название IP или хостнейма) со списка тех, кто имеет право подключаться к X-серверу.
- + — Контроль доступа к X-серверу отключен; разрешение всем и отовсюду.
- — — Контроль доступа к X-серверу включен; разрешение только по списку.
- <ничего> — Если аргументов не указано то выводится информации о текущем состоянии разрешения подключений.
Выведем информацию о текущем состоянии разрешений пользователей или хостов на подключение:
$ xhost
Разрешить полный доступ к X-серверу (всем и отовюсду):
# xhost +
Запретить доступ к X-серверу (разрешение только по списку):
# xhost -
Разрешить запуск графических программ от имени root на локальной машине:
# xhost local:root
Разрешить запуск графических программ от имени root на локальной машине:
# xhost local:root
Или:
# xhost +si:localuser:root
Разрешить запуск графических программ с 192.168.13.113 на локальной машине:
# xhost + 192.168.13.113
Запретить запуск графических программ с 192.168.13.113 на локальной машине:
# xhost - 192.168.13.113
Можно указать вот так:
- 192.168.13.113:0 Нулевой дисплей на компьютере Sky
- 192.168.13.113:0.1 Первый экран нулевого дисплея данного компьютера
- 192.168.13.113:3 Третий дисплей данного компьютера
Чаще всего имя дисплея — это или просто «:0.0», или «компьютер:0.0». Чтобы узнать какой дисплей используется в системе, выполните:
$ echo $DISPLAY
Чтобы установить DISPLAY переменную, выполните (bash):
$ DISPLAY=192.168.13.113:0.0; export DISPLAY
Чтобы установить DISPLAY переменную, выполните (bash):
$ setenv DISPLAY 192.168.13.113:0.0
xhost + — огромная дыра в безопасности, поскольку она дает каждому доступ к вашим ресурсам X-сервера (не только вашему дисплею, но также и вашу мышь и клавиатуру), поэтому каждый может читать или изменять то, что вы набираете/нажимаете. Плохая привычка использовать «xhost +». Даже когда вы используете «xhost + localhost», вы открываете доступ всем людям кто на localhost-е. Тогда, как быть и что исользовать? Простейшим способом является ssh-туннелирование.
$ ssh -X oracle@localhost Last login: Fri Max 2 11:33:55 2017 from localhost $ if xterm -e true; then echo success; fi success
Другой способ это — использовать cookie X:
$ xauth extract ~/my-x-cookie $DISPLAY< $ setfacl -m u:oracle:r ~/my-x-cookie $ su - oracle -c "DISPLAY=$DISPLAY bash" Password: $ if xterm -e true; then echo success; fi Xlib: connection to ":0.0" refused by server Xlib: No protocol specified xterm Xt error: Can't open display: :0.0 $ xauth merge ~lsc/my-x-cookie xauth: creating new authority file ~oracle/.Xauthority $ if xterm -e true; then echo success; fi success
Можно создать алиас:
alias oracle=' xauth extract $HOME/my-x-cookie $DISPLAY; setfacl -m u:oracle:r $HOME/my-x-cookie; su - oracle -c "export DISPLAY=$DISPLAY; xauth merge $HOME/my-x-cookie; bash"'
Вот и все, статья «Утилита xhost в Unix/Linux» подошла к завершению.
Сгенерировать открытый/закрытый SSH ключ в Unix/Linux
Подключение к серверу может быть различным, но одно из самых безопастных — это использования закрытого/открытого SSH-ключа, т.к при этом по сети не передается никакой пароль и система устойчива к атакам методом «грубой силы». Ничего нового я в этой теме не опишу, но для новичков — будет полезно. Та вообще, в качестве заметке — может пригодится кому-то.
Сгенерировать открытый/закрытый SSH ключ в Unix/Linux
Имеется 2 основных технологии по шифрованию ключей:
- RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел.
- DSA (англ. Digital Signature Algorithm — алгоритм цифровой подписи) — криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.
- ecdsa -новый алгоритм цифровой подписи (DSA), разработанный правительством США с использованием эллиптических кривых. Вероятно, это хороший алгоритм для текущих приложений. Поддерживаются только три размера ключа: бит 256, 384 и 521. Мы рекомендуем всегда использовать его с 521 битом.
- ed25519 — это новый алгоритм, добавленный в OpenSSH. Поддержка этого в клиентах еще не является универсальной. Таким образом, его использование в приложениях общего назначения, возможно, еще не рекомендуется.
Есть много споров насчет того, что более секурнее, DSA или RSA. Но выбор по использованию за вами.
Генерация открытого/закрытого SSH ключ с RSA шифрованием в Unix/Linux
Откройте терминал. Введите:
$ ssh-keygen -t rsa
Он сгенерирует ключ и положит в стандартную папку (~/.ssh). Можно указать какую битность использовать:
$ ssh-keygen -t rsa -b 4096
Для более удобного использования, я создам файл с именем котороя я задам сам, например:
$ ssh-keygen -t rsa -b 4096 -C "shared_L1_team_acc" -f ~/.ssh/l1_key
Как-то так.
Генерация открытого/закрытого SSH ключ с DSA шифрованием в Unix/Linux
Альтернативой является использование для создания ключа технологии DSA (Digital Signing Algorithm):
$ ssh-keygen -t dsa
Он сгенерирует ключ и положит в стандартную папку (~/.ssh). Можно указать какую битность использовать:
$ ssh-keygen -t dsa -b 4096
Для более удобного использования, я создам файл с именем котороя я задам сам, например:
$ ssh-keygen -t dsa -b 4096 -C "shared_L1_team_acc" -f ~/.ssh/l1_key
Как-то так.
Генерация открытого/закрытого SSH ключ с ecdsa шифрованием в Unix/Linux
И так, чтобе заюзать данный тип шифрования, можно выполнить:
# ssh-keygen -t ecdsa -b 521
И опять таки, можно заюзать:
# ssh-keygen -t ecdsa -b 521 -f test_ecdsa_key
Идем дальше…
Генерация открытого/закрытого SSH ключ с ed25519 шифрованием в Unix/Linux
И так, чтобе заюзать данный тип шифрования, можно выполнить:
# ssh-keygen -t ed25519 -b 521
И опять таки, можно заюзать:
# ssh-keygen -t ed25519 -b 521 -f test_ed25519_key
Идем дальше…
Переключить версию python в Unix/Linux
Сейчас по умолчанию, во многих Unix/Linux ОС используется питон 2.6. Чтобы проверить какая версия питона используется в системе, выполните:
$ python -V Python 2.6
Выполним установку python:
Так же, посмотрим:
$ ls -al /usr/local/bin/python*
Получаем:
lrwxrwxrwx. 1 root root 7 Apr 11 10:38 /usr/local/bin/python -> python2 lrwxrwxrwx. 1 root root 9 Apr 11 10:38 /usr/local/bin/python2 -> python2.7 -rwxr-xr-x. 1 root root 6294753 Apr 11 10:37 /usr/local/bin/python2.7 -rwxr-xr-x. 1 root root 1687 Apr 11 10:38 /usr/local/bin/python2.7-config lrwxrwxrwx. 1 root root 16 Apr 11 10:38 /usr/local/bin/python2-config -> python2.7-config lrwxrwxrwx. 1 root root 9 Apr 11 11:10 /usr/local/bin/python3 -> python3.6 -rwxr-xr-x. 2 root root 9961651 Apr 11 11:08 /usr/local/bin/python3.6 lrwxrwxrwx. 1 root root 17 Apr 11 11:10 /usr/local/bin/python3.6-config -> python3.6m-config -rwxr-xr-x. 2 root root 9961651 Apr 11 11:08 /usr/local/bin/python3.6m -rwxr-xr-x. 1 root root 3083 Apr 11 11:10 /usr/local/bin/python3.6m-config lrwxrwxrwx. 1 root root 16 Apr 11 11:10 /usr/local/bin/python3-config -> python3.6-config lrwxrwxrwx. 1 root root 14 Apr 11 10:38 /usr/local/bin/python-config -> python2-config
И так, чтобы переключить версию питона, я буду использовать несколько методов.
-===СПОСОБ 1 — использование алиаса===-
Один из самых простых способов — это использовать алиасы. Открываем файл:
# vim ~/.bashrc
И, прописываем сам алиас на нужную версию питона:
alias python='/usr/local/bin/python3.6'
Чтобы изменения вступили в силу, выполняем:
$ . ~/.bashrc
После этого, можно проверять версию:
$ python --version Python 3.6.1
Видно что все отлично работает.
-===СПОСОБ 2 — использование alternatives===-
Чтобы изменить версию python глобально, я воспользуюсь alternatives утилитой:
# alternatives --list | grep -i python
Если вывода не будет, — это будет означать, что python alternative еще не сконфигурирована. Чтобы это сделать, выполните ( взято в качестве примера):
# alternatives --install /usr/bin/python python /usr/local/bin/python3.6 2 # alternatives --install /usr/bin/python python /usr/local/bin/python2.7 1
Вышеупомянутые команды будут указывать команде alternatives для создания соответствующих символических ссылок, которые будут использоваться при выполнении команды python. Я назначил python3.6 более высокий приоритет ( цифра 2), — это означает, что если не выбрана альтернатива для python, то по умолчанию будет использоваться python3.6. После выполнения вышеуказанных команд ваша версия python должна измениться на python3.6 из-за ее более высокого приоритета.
Проверяем:
# python -V Python 3.6.1
Для переключения между вышеперечисленными версиями python теперь достаточно просто:
# alternatives --config python
Чтобы удалить питон с alternatives, используем:
# update-alternatives --remove python /usr/local/bin/python3.6
Как-то так! На этому у меня все, статья «Переключить версию python в Unix/Linux» завершена.
Использование X11 forwarding через ssh в Unix/Linux
На локальном хосте должна быть установлена система с X11, чтобы отображать удаленные программы. Для того чтобы выполнить форвардинг, выполните:
$ ssh -X remote_ssh_user@remote_server
Например:
$ ssh -X -v [email protected]
После входа в систему вы можете запускать любую X11 программу на удаленном сервере, как обычно, и ее отображение будет отображаться на локальной клиентской машине.
Можно еще опции, передавать через коммандную строку:
$ ssh -o ForwardX11=yes user_name@your_remote_server
Безопастность при использовании X11 forwarding через ssh
Обычно, не рекомендуется всегда работать с «ForwardX11 yes». Поэтому, если вы хотите использовать свои SSH-соединения с пвыщенной безопасностью, лучше всего сделать следующее:
- Не прописывать «ForwardX11 yes» в ваш «$HOME/.ssh/confi»g файл.
- Используйте «ForwardingX11» только когда вам это необходимо, используя «ssh -X your_user@your_server».
- Если вы можете, полностью отключите «X11Forwarding» на вашем сервере.
Вот и все, статья «Настройка X11 forwarding используя ssh в Unix/Linux» завершена.
Как пользоваться curl?
Мы рассмотрели все, что касается теории работы с утилитой curl, теперь пришло время перейти к практике, и рассмотреть примеры команды curl.
Загрузка файлов
Самая частая задача — это загрузка файлов linux. Скачать файл очень просто. Для этого достаточно передать утилите в параметрах имя файла или html страницы:
Но тут вас ждет одна неожиданность, все содержимое файла будет отправлено на стандартный вывод. Чтобы записать его в какой-либо файл используйте:
А если вы хотите, чтобы полученный файл назывался так же, как и файл на сервере, используйте опцию -O:
Если загрузка была неожиданно прервана, вы можете ее возобновить:
Если нужно, одной командой можно скачать несколько файлов:
Еще одна вещь, которая может быть полезной администратору — это загрузка файла, только если он был изменен:
Данная команда скачает файл, только если он был изменен после 21 декабря 2017.
Ограничение скорости
Вы можете ограничить скорость загрузки до необходимого предела, чтобы не перегружать сеть с помощью опции -Y:
Здесь нужно указать количество килобайт в секунду, которые можно загружать. Также вы можете разорвать соединение если скорости недостаточно, для этого используйте опцию -Y:
Передача файлов
Загрузка файлов, это достаточно просто, но утилита позволяет выполнять и другие действия, например, отправку файлов на ftp сервер. Для этого существует опция -T:
Или проверим отправку файла по HTTP, для этого существует специальный сервис:
В ответе утилита сообщит где вы можете найти загруженный файл.
Отправка данных POST
Вы можете отправлять не только файлы, но и любые данные методом POST. Напомню, что этот метод используется для отправки данных различных форм. Для отправки такого запроса используйте опцию -d. Для тестирования будем пользоваться тем же сервисом:
Если вас не устраивает такой вариант отправки, вы можете сделать вид, что отправили форму. Для этого есть опция -F:
Здесь мы передаем формой поле password, с типом обычный текст, точно так же вы можете передать несколько параметров.
Передача и прием куки
Куки или Cookie используются сайтами для хранения некой информации на стороне пользователя. Это может быть необходимо, например, для аутентификации. Вы можете принимать и передавать Cookie с помощью curl. Чтобы сохранить полученные Cookie в файл используйте опцию -c:
Затем можно отправить cookie curl обратно:
Передача и анализ заголовков
Не всегда нам обязательно нужно содержимое страницы. Иногда могут быть интересны только заголовки. Чтобы вывести только их есть опция -I:
А опция -H позволяет отправить нужный заголовок или несколько на сервер, например, можно передать заголовок If-Modified-Since чтобы страница возвращалась только если она была изменена:
Аутентификация curl
Если на сервере требуется аутентификация одного из распространенных типов, например, HTTP Basic или FTP, то curl очень просто может справиться с такой задачей. Для указания данных аутентификации просто укажите их через двоеточие в опции -u:
Точно так же будет выполняться аутентификация на серверах HTTP.
Использование прокси
Если вам нужно использовать прокси сервер для загрузки файлов, то это тоже очень просто. Достаточно задать адрес прокси сервера в опции -x:
Команда kill в Unix/Linux
Сигналы — программные прерывания. Они используются для связи между процессами в UNIX и UNIX-подобных операционных систем, таких как Linux, Mac OS.
Сигналы использовались еще с Bell Labs UNIX в 1970 и сегодня официально определено стандартом POSIX. Когда сигнал поступает на процесс, операционная система прерывает нормальный поток выполнения процесса и обеспечивает уведомление.
Не имеет значения, какую операционную систему вы используете, вы несомненно столкнетесь с тем что ваши приложения, блокируются и отказаться работать должным образом. В Unix, Linux, есть команда «kill», которую вы можете использовать, чтобы прекратить процесс немедленно, но и не только это, но об этом немного позже я расскажу. В этой статье «Команда kill в Unix/Linux» я расскажу и покажу на готовых примерах различные команды утилиты kill.
Команды kill и сигналы
Когда вы выполняете команду «kill», вы на самом деле посылает е сигнал к системе и даете указание расторгнуть работу некорректной роботы приложения. Существует в общей сложности 60 сигналов, которые можно использовать, но все, что вы действительно должны знать, SIGTERM (15) и SIGKILL (9).
Вы можете просмотреть все сигналы с помощью команды:
# kill -l
На моей MacOS:
kill -l на macos
На CentOS:
kill -l на centos
На Debian:
kill -l на Debian
Я постараюсь рассказать о всех сигналах, но для самого начала поговорим только о самых важных и часто использующихся.
curl vs. wget: в чем разница?
Люди часто пытаются определить относительные преимущества команд и . Команды имеют некоторое функциональное перекрытие. Каждый из них может извлекать файлы из удаленных мест, но на этом сходство заканчивается.
— это фантастический инструмент для загрузки контента и файлов . Он может загружать файлы, веб-страницы и каталоги. Он содержит интеллектуальные процедуры для просмотра ссылок на веб-страницах и рекурсивной загрузки контента по всему веб-сайту. Это непревзойденный менеджер загрузок из командной строки.
удовлетворяет совершенно другую потребность . Да, он может извлекать файлы, но не может рекурсивно перемещаться по веб-сайту в поисках контента для извлечения. На самом деле позволяет вам взаимодействовать с удаленными системами, отправляя запросы к этим системам, а также получая и отображая их ответы. Эти ответы вполне могут быть содержимым веб-страницы и файлами, но они также могут содержать данные, предоставляемые через веб-службу или API в результате «вопроса», задаваемого запросом скручивания.
И не ограничивается веб-сайтами. поддерживает более 20 протоколов, включая HTTP, HTTPS, SCP, SFTP и FTP. И, возможно, благодаря превосходной обработке каналов Linux, легче интегрировать с другими командами и сценариями.
У автора есть веб-страница, которая описывает различия, которые он видит между и .
Настройка X11 forwarding используя ssh в Unix/Linux
Открываем файл:
# vim /etc/ssh/sshd_config
И прописываем (приводим к виду):
X11Forwarding yes X11DisplayOffset 10
Так же, можно прописать:
X11UseLocalhost no
Перезапуск SSH сервера:
- Если используете Debian 6, Ubuntu или Linux Mint:
# /etc/init.d/ssh restart
- Если используете Debian 7, CentOS/RHEL 7, Fedora
# systemctl restart ssh.service
- Если используете CentOS/RHEL 6
$ sudo service sshd restart
Вышеупомянутая настройка, позволяет X11 форвардинг на хост сервера. Если вы хотели бы включить X11 forwarding для отдельного пользователя, вы можете использовать пользовательский файл конфигурации ssh (т. е. $HOME/.ssh/config). Таким образом, вы можете использовать переадресацию X11 только тогда, когда вы используете ssh для учетной записи пользователя. Открываем:
$ vim $HOME/.ssh/config
И прописываем:
ForwardX11 yes
Мой файл выглядит следующим образом:
IdentityFile ~/.ssh/id_rsa Host * UseKeychain yes ForwardX11 no ServerAliveInterval 15 ForwardAgent yes ForwardX11Trusted yes GatewayPorts yes
Если используете Vagrant, то внутри его, можно пробросить следующие опции:
config.ssh.forward_agent = true config.ssh.forward_x11 = true
Ну и далее запускаем все это дело.
Установка pexpect в Unix/Linux
Я приведу несколкьо примеров по установке данного ПО.
-=== СПОСОБ 1 — Использование tar рахива ===-
Скачиваем pexpect архив:
# cd /usr/local/src && wget https://netcologne.dl.sourceforge.net/project/pexpect/pexpect/Release%202.3/pexpect-2.3.tar.gz
Распакуем его,и, перейдем в папку:
# tar zxf pexpect-current.tgz && cd pexpect-current
Запускаем установку:
# python setup.py install
Можно юзать!
-=== СПОСОБ 2 — Использования установщика PIP ===-
Для начала, установим PIP:
После чего, выполняем:
# pip install pexpect
Или:
# pip3 install pexpect
Установка закончена, используйте. Примеры покажу ниже.
Подготовка nginx к мониторингу
Я планирую мониторить следующие параметры nginx:
accepts per second | Число принятых соединений в секунду |
active connections | Текущие активные соединения |
handled per second | Число обработанных соединений в секунду |
latency | Время ответа сервера в миллисекундах |
memory allocated | Занимаемая память |
process count | Число запущенных процессов |
reading state connection count | Текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса |
requests per second | Число запросов в секунду |
waiting state connection count | Текущее число бездействующих соединений в ожидании запроса |
writing state connection count | Текущее число соединений, в которых nginx в настоящий момент отвечает |
memory allocated | Сколько памяти занимают все worker process |
Сервер nginx умеет отдавать часть необходимой нам информации о своем состоянии. Для этого его надо соответствующим образом подготовить. Открываем конфиг сервера и добавляем туда следующую конструкцию:
server { listen localhost; server_name localhost; keepalive_timeout 0; allow 127.0.0.1; allow ::1; deny all; access_log off; location /nginx-status { stub_status on; }
Я обычно добавляю в самый конец основного конфига nginx.conf. Сохраняем и перечитываем конфигурацию, перед этим проверив его конфиг на ошибки:
# nginx -t # nginx -s reload
Проверяем, можем ли мы получить необходимую информацию для настройки мониторинга:
# curl http://localhost/nginx-status Active connections: 89 server accepts handled requests 1374661 1374661 9511381 Reading: 0 Writing: 1 Waiting: 87
Теперь проверим, сможет ли zabbix получать эту страницу.
# zabbix_agentd -t web.page.get
Если у вас так же, то все в порядке, можно двигаться дальше. Если что-то не получается, то проверяйте конфиги, смотрите логи. Это штатный функционал, он должен без проблем настраиваться и работать.
Сразу обращаю внимание на один важный момент, на котором я застрял на приличное время. Через curl я без проблем забирал страничку со статусом nginx, а вот через zabbix никак не получалось
Была ошибка:
:80]: Connection refused]
Я всю голову сломал, 10 раз перепроверил конфиги, никак не мог понять, почему не работает. Оказалось, дело было вот в чем. Zabbix-agent обращался к серверу Nginx по протоколу ipv6. Это при том, что как агент, так и nginx работали по ipv4. Я принудительно отключаю у служб ipv6, если он не используется.
Обнаружил это случайно, когда от безысходности запустил Nginx на всех интерфейсах и снял ограничения allow/deny в конфиге. Тогда запрос прошел нормально. Я посмотрел access лог и увидел, что zabbix-agent обращается с адреса ::1. И все стало ясно. Я так и не понял, как заставить агента ходить по ipv4. В итоге запустил nginx на обоих протоколах и разрешил забирать страницу статуса с адреса ::1. После этого заработало.
Самое неприятное в этой ситуации было то, что в логах нигде не было никаких ошибок, отклоненных запросов или чего-то еще, что могло бы дать зацепку. Zabbix agent просто писал, что подключение отклонено и все. О том, что он обращается по ipv6, не было никакого намека.
Следовать за редиректами
Сервер Google сообщил нам, что страница перемещена (301 Moved Permanently), и теперь надо запрашивать страницу . С помощью опции укажем CURL следовать редиректам:
> curl -L google.com <!doctype html> <html itemscope="" itemtype="http://schema.org/WebPage" lang="ru"> <head> <meta content="Поиск информации в интернете: веб страницы, картинки, видео и многое другое." name="description"> <meta content="noodp" name="robots"> <meta content="/images/branding/googleg/1x/googleg_standard_color_128dp.png" itemprop="image"> <meta content="origin" name="referrer"> <title>Google</title> ..........
Установка Filebeat в Unix/Linux
Прежде чем начать устанавливать файлбит, я бы рекомендовал прочитать установку ELK:
Т.к данная утилита бессмысленна без этого стека.
Установка Filebeat в CentOS/Fedora/RHEL
-===СПОСОБ 1 — использовать репозиторий ===-
Загружаем и устанавливаем публичный ключ подписи:
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Открываем (создаем) файл:
# vim /etc/yum.repos.d/filebeat.repo
И прописываем:
name=Elastic repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Вы можете установить его с помощью команды:
# yum install filebeat -y
-===СПОСОБ 2 — использовать RPM пакет ===-
# cd /usr/local/src && curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.1-x86_64.rpm # rpm -vi filebeat-5.4.1-x86_64.rpm
-===СПОСОБ 3 — использовать готовый архив ===-
Настройка и запуск утилиты будет немного ниже.
Установка Filebeat в Debian/Ubuntu
-===СПОСОБ 1 — использовать репозиторий ===-
Загружаем и устанавливаем публичный ключ подписи:
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
Возможно, вам придется установить пакет apt-transport-https на Debian перед установкой утилиты:
# apt-get install apt-transport-https -y
Добавляем репозиторий:
# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list
Вы можете установить его с помощью команды:
# apt-get update && sudo apt-get install filebeat
-===СПОСОБ 2 — использовать DEB пакет ===-
# cd /usr/local/src && curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.1-amd64.deb # dpkg -i filebeat-5.4.1-amd64.deb
-===СПОСОБ 3 — использовать готовый архив ===-
Настройка и запуск утилиты будет немного ниже.
Установка Filebeat в Mac OS X
Для начала, устанавливаем HOMEBREW — Установка HOMEBREW на Mac OS X после чего, выполняем поиск пакета:
$ brew search filebeat
Для установки:
$ brew install filebeat
-=== СПОСОБ 2 — использовать готовый архив==-
# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.1-darwin-x86_64.tar.gz # tar xzvf filebeat-5.4.1-darwin-x86_64.tar.gz
Настройка и запуск утилиты будет немного ниже.
Установка Filebeat на другие Unix/Linux ОС
-=== СПОСОБ 1 — использовать docker==-
Не было нужды использовать logstesh в докере. Как появиться, так сразу же обновлю данную статью.
-===СПОСОБ 2 — использовать готовый архив ===-
Опции
Синтаксис опций очень свободный. У каждой опции, как правило есть как длинное, так и короткое имя. Их можно записывать как до URL, так и после. Между опцией и ее значением не обязательно ставить пробел, например вы можете написать -o log или -olog. Эти значения эквивалентны. Также если у опций нет параметров, не обязательно начинать каждую с дефиса, можно записать их все вместе: -drc и -d -r -c. Эти параметры wget тоже эквивалентны.
А теперь давайте перейдем к списку опций. У wget слишком много опций, мы разберем только основные.
- -V (—version) — вывести версию программы
- -h (—help) — вывести справку
- -b (—background) — работать в фоновом режиме
- -o файл (—out-file) — указать лог файл
- -d (—debug) — включить режим отладки
- -v (—verbose) — выводить максимум информации о работе утилиты
- -q (—quiet) — выводить минимум информации о работе
- -i файл (—input-file) — прочитать URL из файла
- —force-html — читать файл указанный в предыдущем параметре как html
- -t (—tries) — количество попыток подключения к серверу
- -O файл (—output-document) — файл в который будут сохранены полученные данные
- -с (—continue) — продолжить ранее прерванную загрузку
- -S (—server-response) — вывести ответ сервера
- —spider — проверить работоспособность URL
- -T время (—timeout) — таймаут подключения к серверу
- —limit-rate — ограничить скорость загрузки
- -w (—wait) — интервал между запросами
- -Q (—quota) — максимальный размер загрузки
- -4 (—inet4only) — использовать протокол ipv4
- -6 (—inet6only) — использовать протокол ipv6
- -U (—user-agent)- строка USER AGENT отправляемая серверу
- -r (—recursive)- рекурсивная работа утилиты
- -l (—level) — глубина при рекурсивном сканировании
- -k (—convert-links) — конвертировать ссылки в локальные при загрузке страниц
- -P (—directory-prefix) — каталог, в который будут загружаться файлы
- -m (—mirror) — скачать сайт на локальную машину
- -p (—page-requisites) — во время загрузки сайта скачивать все необходимые ресурсы
Кончено это не все ключи wget, но здесь и так слишком много теории, теперь давайте перейдем к практике. Примеры wget намного интереснее.
Утилита pv — прогресс bar для консольных утилит в Unix/Linux
pv — это утилита которая имеет сокращение от pipeviewer и позволяет пользователю видеть прогресс выполнение той или иной команды по конвейеру и предоставляя информацию (прошедшее время, процент завершения (с индикатором выполнения), текущую пропускную способность, общий объем данных и ETA) — это просмоторщик пайпов.
Установка pv утилиты, очень простая, выполняем:
# aptitude install pv
или
# apt-get install pv
Для начала, подключаем репозиторий EPEL:
Установка pv утилиты, очень простая, выполняем:
# yum install pv
Установка pv в FreeBSD
Установка pv утилиты, очень простая, выполняем:
# cd /usr/ports/sysutils/pv/ # make install clean
Или:
# pkg_add -r pv
Устанавливаем homebrew: Установка homebrew на Mac OS X после чего, выполняем:
$ brew install pv
Если Вы пользователь OpenSolaris:
$ pfexec pkg install pv
Установка pv для других Unix/Linux
Если не имеется пакета для установки, то переходим на официальную страницу pv, загружаем архив и выполняем ряд действий:
$ tar -zxf pv-version.tar.gz $ cd pv-version $ ./configure && sudo make install
Запустить команду от другого пользователя в Unix/Linux
Иногда, просто необходимо запустить команду от другого пользователя. И существует несколько способов, как это можно сделать. Я расскажу о них в своей статья «Запустить команду от другого пользователя в Unix/Linux».
Запустить команду от другого пользователя в Unix/Linux — способ 1
И так, можно использовать утилиту SUDO. Рассмотрим пример:
$ sudo -H -u Your_another_user -c 'ping linux-notes.org'
Пояснения:
- -H YOUR_HOME: Задает HOME (Переменное окружение для хома конкретного юзера) и по умолчанию — это root.
- -u YOUR_USER: Задаем пользователя от которого будет выполнена команда.
- -c YOUR_COMMAND: Служит опцией для ввода команды.
Как-то так.
Запустить команду от другого пользователя в Unix/Linux — способ 2
Можно использовать утилиту SU. И сейчас приведу несколько примеров.
Логин в root юзера
Чтобы получить рута, выполните:
$ su -
Или:
$ su - root
Запустить команду как root юзер
Вот пример команды:
# su - root -c "YOUR_COMMAND_HERE"
Или
su - -c "YOUR_COMMAND_HERE arg1"
Идем дальше….
Выполнить команду от другого пользователя с помощью su
И так, вот пример:
# su -c "/opt/solr/bin/solr create -c test_solr_core -n solrconfig.xml" -s /bin/sh solr Created new core 'test_solr_core'
Рассмотрим другой пример:
$ su another_user -c 'ping linux-notes.org'
Или:
$ su - YOUR_USER -c "YOUR_COMMAND_HERE"
Где:
- — — Будет имитировать логин указанного пользователя.
- -c — Служит для указания команды для выполнения (для указанного юзверя).
Как-то так.
Запустить команду от другого пользователя в Unix/Linux — способ 3
И так, можно использовать утилиту runuser. Команда runuser запускает оболочку с заменяющими идентификаторами пользователей и групп. Эта команда полезна только когда вы залогинены как пользователь root. Синтаксис выглядит следующим образом:
# runuser -l YOUR_USER -c 'YOUR_COMMAND_HERE'
Как пример, я покажу следующую строку:
# runuser -l nginx -c 'service nginx start'
PS: Для использования команды runuser пароль не требуется, и он должен запускаться только пользователем root.
Основные опции:
- -l: Создаст оболочку для входа в систему, используя файл runuser-l PAM вместо стандартного.
- -g: Указывает на основную группу.
- -G: Указывает на дополнительную группу.
- -c: Собственно, служит для указания команды.
- –session-command=COMMAND: Передает одну команду в оболочку с опцией «-c» и не создает новый сеанс.
- -m: Не сбрасывайте переменные среды (ENV).
Вот и все, тема «Запустить команду от другого пользователя в Unix/Linux» завершена.