суббота, 8 февраля 2025 г.

start openvpn client



cp file.ovpn /etc/openvpn/client/file.conf

sudo systemctl enable openvpn-client@file

sudo systemctl start openvpn-client@file

sudo systemctl stop openvpn-client@file


chrome в режиме киоска

 /usr/bin/google-chrome --kiosk  --window-size=1281,1025 --window-position=0,0 --no-first-run --incognito --no-default-browser-check --disable-translate --app=https://kinopoisk.ru/

вторник, 4 февраля 2025 г.

Маленький веб сервер

Встроенный веб-сервер php

cd ~/public_html

sudo php -S localhost:80


Средствами nc

http://хост netcat:80/index.html. Для использования стандартного порта веб-сервера под номером 80 необходимо запустить nc c root привелегиями:

while true; do sudo nc -lp 80 < index.html; done

пятница, 10 января 2025 г.

Bitrix / Добавляем в корзину товар, которого нет в каталоге.

ajax запрос...

$(".cartr").on("click", function() {

        $.ajax({

            type: 'POST',

            cache: false,

            url: '/services/cart/',

            data: {item: $(this).closest('.replacement').attr('value')+';'+$(this).closest('.replacement').find(".price").text()},

            success: function (data) {

                $('.basket-line-block-icon-cart').text(data['count']+" позиции");

                $(this).find("path").css('stroke: #836063;');

            }

    });

        return false;

});



Обработка ajax запрос...

/services/cart/index.php

 <?php

require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");

use \Bitrix\Main\Loader;


Loader::includeModule('iblock');

Loader::includeModule('sale');

Loader::includeModule('catalog');


if ((include $_SERVER["DOCUMENT_ROOT"].'/services/include.php') != TRUE) {

    exit;

}


if(isset($_POST['item'])) {

    $json = $_POST['item'];

    header("Content-type: application/json; charset=UTF-8");

    header("Cache-Control: must-revalidate");

    header("Pragma: no-cache");

    header("Expires: -1");

    $arr = explode(';', $json);

    $vowels = array(" ", "₽", " ");

    $siteId = 's1'; // ID сайта, к которому будет привязана корзина

    $basket = \Bitrix\Sale\Basket::create($siteId);


    $item = $basket->createItem('catalog', rand(10000000000, 11000000000));

    $item->setFields([

            'QUANTITY' => '1',

            'CURRENCY' => Bitrix\Currency\CurrencyManager::getBaseCurrency(),

            'LID' => Bitrix\Main\Context::getCurrent()->getSite(),

            'NAME' => $arr[0]." / ".$arr[1],

            'PRICE' => ceil(floatval(str_replace($vowels, "", $arr[2]))),

            'CUSTOM_PRICE' => 'Y',

    ]);

    $b = $basket->save();

    $dbRes = \Bitrix\Sale\Basket::getList(

[

'select' => ['NAME', 'QUANTITY'],

'filter' => [

'=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), 

'=ORDER_ID' => null,

'=LID' => \Bitrix\Main\Context::getCurrent()->getSite(),

'=CAN_BUY' => 'Y',

]

]

    );

    $c=0;

    while ($item = $dbRes->fetch())

    {

        $c++;

    }

    print json_encode(array('result' => $b->isSuccess(), 'count' =>  $c, 'user' => \Bitrix\Sale\Fuser::getId()));

}


воскресенье, 11 августа 2024 г.

Получение буфера обмена по SSH

sudo nvim /etc/ssh/sshd_config 

Удаляем диезы # у сток:

X11Forwarding yes

X11DisplayOffset 10

X11UseLocalhost yes


Перезапускаем SSHD

sudo systemctl reload sshd

Теперь подключаемся по ssh с параметром -X
ssh -X user@192.168.0.2

Проверяем. Открываем файл в nvim.
nvim index.html

Выделяем какой-либо текст. Например:
gg^G$

Копируем.
YY

Вставляем в текстовом редакторе на локальной машине.
Shift+Ins

четверг, 12 октября 2023 г.

ssh туннель (бесплатный VPN по SSH)

На удаленной машине:

Настраиваем ssh сервер.

sudo nvim /etc/ssh/sshd_config 

PermitTunnel yes

AllowTCPForwarding yes


Перезапускаем ssh сервер.

systemctl restart sshd



На локальной машине

sudo su

ssh -f -v -o Tunnel=point-to-point -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 100:100 root@IP-remote-host \

'/sbin/ifconfig tun100 172.16.40.1 netmask 255.255.255.252 pointopoint 172.16.40.2' && \

/sbin/ifconfig tun100 172.16.40.2 netmask 255.255.255.252 pointopoint 172.16.40.1


где IP-remote-host - IP удаленной машины.


Проверяем открыт-ли порт на удаленной машине

nc -zvw3 IP-remote-host

 Connection to IP-remote-host port [tcp/ssh] succeeded!

четверг, 14 сентября 2023 г.

Изменить уровень запуска в systemd



В Ubuntu 16.04 вместо init используется systemd, поэтому понятие runlevelsзаменяется термином targets. Таким образом, действительно существует соответствие между уровнями запуска на основе init и целями на основе systemd: Mapping between runlevels and systemd targets
 ┌─────────┬───────────────────┐
 │Runlevel           │ Target                                           │ 
 ├─────────┼───────────────────┤
 │0                       │ poweroff.target                             │ 
 ├─────────┼───────────────────┤
 │1                       │ rescue.target                                 │ 
 ├─────────┼───────────────────┤
 │2, 3, 4               │ multi-user.target                           │
 ├─────────┼───────────────────┤ 
 │5                       │ graphical.target                            │ 
 ├─────────┼───────────────────┤ 
 │6                       │ reboot.target                                 │  
 └─────────┴───────────────────┘


Теперь, чтобы просто изменить «уровни запуска» в 16.04, вы можете использовать, например:

sudo systemctl isolate multi-user.target


Чтобы сделать это «уровнем запуска» по умолчанию, вы можете использовать:

sudo systemctl enable multi-user.target 
sudo systemctl set-default multi-user.target

воскресенье, 27 августа 2023 г.

remap caps lock ctrl

в консоли, а не в X11

sudo usermod -a -G input user

где user - имя пользователя


evtest

No device specified, trying to scan all of /dev/input/event*

Available devices:

/dev/input/event4:      AT Translated Set 2 keyboard 



evtest /dev/input/event4                                                                            


Input driver version is 1.0.1                                                                                                            

Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab41                                                                          

Event: time 1630747582.938161, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3a

Event: time 1630747582.938161, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0



dmesg | grep input


sudo vim /lib/udev/hwdb.d/90-keyboard-changes.hwdb

evdev:input:b0011v0001p0001*KEYBOARD_KEY_3a=leftctrl


systemd-hwdb -s update

udevadm trigger /dev/input/event4


Тест

evtest /dev/input/event4

Event: time 1630751006.715770, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3a

Event: time 1630751006.715770, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1

четверг, 17 августа 2023 г.

Создание LVM на «горячей» машине

 Создать LVM раздел на уже установленной системе просто. Первым шагом будет убедиться, что раздел, который Вы хотите сделать LVM не примонтирован, а лучше вообще не создан. В случае, если он не создан, то нужно выполнить команды:


fdisk /dev/mb123, где /dev/mb123 — диск на котором мы создаём раздел.


Жмём d для удаления раздела. enter


Далее объявляем раздел LVM. Для этого жмём t, указываем номер раздела и вводим id lvm. Это 8e. Жмём w — записать изменения на диск.


Проделываем подобные операции со всеми дисками, которые планируется добавить в LVM массив. Что бы проверить успешность действий выше можно ввести команду:


fdisk -l /dev/mb123


В выводе мы увидим раздел с меткой LVM.


Теперь нужно создать физические разделы на LVM. Для этого воспользуемся командой:


pvcreate /dev/mb123  и для остальных дисков так же.


Ну и теперь объединяем их в один логический раздел:


vgcreate vg0 /dev/mb123 /dev/sdb1 (тут указываются все разделы, которые нужно объединить в один)


Далее нужно создать том на логическом разделе командой lvcreate:


lvcreate -L2G -nlogvol1 vg0 (где logvol1 метка тома)


Для монтирования LVM используются следующие конструкции, изменённые для конкретного случая:


mkfs.ext4 /dev/vg0/logvol1 — создаётся файловая система


И монтируем её

mount /dev/vg0/storage1 /home


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

vi /etc/fstab

/dev/vg0/storage1  /home    ext4    defaults        1 2

Split / разбить dump

//Разбить дамп по 50000 строк for i in `ls *.sql`; do split -d -l 50000 -a 4 --additional-suffix=.sql $i "$(basename "$i" .sq...