Пример использования команды linux curl

Использование 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 root@66.66.66.66

После входа в систему вы можете запускать любую 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:

Параметры мониторинга 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» завершена.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: