Архив рубрики: Linux

RabbitMQ — отправка и чтение очереди через curl

Данный запрос можно делать даже из bash в Linux так как используются стандартные инструменты.

Все необходимое (обменник, очереди) можно создать через WEB-интерфейс RabbitMQ Managment. Предполагаем , что они уже созданы.

Отправляем сообщение в очередь.

В примере ниже :

vhost — имя хоста (exchanges)

delivery_mode 2 — записываем в режиме когда данные очереди сохраняются даже после падения сервера (сохраняются на диск)

routing_key — имя нашей очереди

payload — в данном случае строка , которую мы передаем в сообщении

%2F/amq.default — имя обменника внутри хоста

curl -s -u user:password -H "Accept: application/json" -H "Content-Type:application/json" -X POST -d'{
    "vhost": "Test_Virtual_Host",
    "properties": {
        "delivery_mode": 2,
        "headers": {}
    },
    "routing_key": "testqueues",
    "payload":"/dfgdfgfd/dfgdfg/dfgdfgfdg.dat",
    "headers": {},
    "props": {},
    "payload_encoding": "string"
}' http://127.0.0.1:15672/api/exchanges/%2F/amq.default/publish

Читаем сообщение.

curl -s -u user:password -H "content-type:application/json" -X POST -d'{
"count":2,
"ackmode":"ack_requeue_false",
"encoding":"auto",
"truncate":5000
}' http://127.0.0.1:15672/api/queues/%2F/testqueues/get

Удалить обменник через curl.

curl -s -u admin:1234567890 -X DELETE http://127.0.0.1:15672/api/vhosts/Test_Virtual_Host

Вывести из лог-файла Apache строки, которые находятся в интервале указанного времени.

Вот такая история…

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

wget https://raw.githubusercontent.com/solaryssky/PERL/main/apache_log_parser.pl && chmod 0777 ./apache_log_parser.pl

Использовать так:

./apache_log_parser.pl -s=13:00 -e=13:59 ./access.log

Linux Kali — подключаемся через RDP

Для включения RDP в Kali Linux нужно установить сервер XRDP далее включить автозагрузку

Устанавливаем cервер XRDP:

apt-get install xrdp

Запускаем и добавляем в атозапуск xrdp:

service xrdp start
service xrdp-sesman start
update-rc.d xrdp enable

Для более менее комфортной работы поменяй в настройках RDP качество изображения на 16bit и сделайте однотонную заставку на рабочий стол.

Rust — кросскомпиляция. Посмотреть набор инструментов.

Для кросскомпиляции в Rust нужно установить набор библиотек, необходимых для компиляции на определенной платформе.

Чтобы посмотреть установленные набор : rustup show

Чтобы добавит например musl , то делаем rustup target add x86_64-unknown-linux-musl

Смотрим rustup show

$ rustup show
.Default host: x86_64-unknown-linux-gnu
rustup home:  /home/dima/.rustup

installed targets for active toolchain
--------------------------------------

x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl

active toolchain
----------------

stable-x86_64-unknown-linux-gnu (default)
rustc 1.40.0 (73528e339 2019-12-16)

Теперь компилируем

$ cargo run --target=x86_64-unknown-linux-musl
   Compiling cfg-if v0.1.10
   Compiling ppv-lite86 v0.2.6
   Compiling libc v0.2.66
   Compiling getrandom v0.1.13
   Compiling c2-chacha v0.2.3
   Compiling rand_core v0.5.1
   Compiling rand_chacha v0.2.1
   Compiling rand v0.7.2
   Compiling read_file v0.1.0 (/home/dima/Rust/read_file)
    Finished dev [unoptimized + debuginfo] target(s) in 36.55s
     Running `target/x86_64-unknown-linux-musl/debug/read_file`
Random u8: 252
Random u16: 4832
Random u32: 141195676
Random i32: -1677746107
Random float: 0.22141390568216823

Делаем авторизацию в Docker по ключу

  1. заходим по ssh на сервер с которого хотим прокинуть-получить авторизацию по ключу (без пароля) . Мне это нужно было, чтобы запускать скрипты в Docker, которые использовали утилиты установленные только в Docker. Проблема в том, чтобы вы не можете так просто в shell-скриптах использовать авторизацию по ssh с паролем.
  2. С сервера выполняем:  $ mkdir ~/.ssh && cd ~/.ssh
  3. Cоздаем открытый и закрытый ключ нашей локальной системы: ssh-keygen -t rsa -q -N » -f ~/.ssh/id_rsa
  4. Если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, чтобы она авторизовывала SSH по открытому ключу: $ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote.server
  5. В принципе все, авторизуемся первый раз по ключу : ssh localhost -p222 -i id_rsa

Дальше в скриптах можно выполнять авторизацию по ключу в Docker

Если grep:argument list too long — ищем данные в несколько потоков

Бывает, если у вас большое количество файлов и вы хотите использовать для этого стандартный grep (например: grep -h pattern ./*), то вполне можете получить сообщение : argument list too long .

Чтобы избежать этого, можно использовать find и для ускорения процесса (железо вам позволяет это делать), то можно распаралелить потоки и воспользоваться следующей командной:

find . -type f -print0 | xargs -n1000 -r0P3 grep pattern

Где:

-n1000 — одновременно максимум 1000 файлов

P3 — используем паралельно 3 процессора

pattern — ваша строка для поиска