LINUX.ORG.RU

Сообщения sniper21

 

Запретить пользователю все команды через sudo, и запретить все команды от пользователя кроме некоторых

Форум — Admin

в Чем проблема?

Создал username и группу username.

# visudo

%username ALL=/bin/pwd, /bin/ls
:wq

но почему-то пользователь всеравно исполняет и ping и cd и прочее

 ,

sniper21
()

rsync непонятка с путями

Форум — Admin

Копируем из /data/test файлы в такую же директорию

rsync -avn root@123.456.789.123:/data/test/ /data/test

и

rsync -avn root@123.456.789.123:/data/test /data/test

весь прикол в последнем / в SRC

В чём отличие?

В первом случае на выходе (ключ -n)

test/
test/file.log

Во втором:

./
file.log

 

sniper21
()

rsync базы с остановкой mysql через ssh

Форум — Admin

собственно как?

rsync -arlptvv -e «ssh -p 21» user@host:/var/lib/mysql var/lib/mysql

 , , ,

sniper21
()

Репликация mysql мастер-слейв.

Форум — Admin

Обязательно ли OC должны быть одинаковы на мастер и слейв?

И насколько разными могут быть конфигурации железа мастера и слейва?

 , , ,

sniper21
()

Что вы так предесь от идеи «все зависимости в одном большо пакете»?

Форум — Talks

I-Love-Microsoft написал тут мысль обозначеную в заголовке

Ищу работу дистрибутивостроителем / системным программистом (комментарий)

«но лучше бы нашелся хоть один адекватный человек, чтобы сделать дистрибутив с нескучными пакетами, которые бы несли все зависимости в себе, поверх некоей минимальной базовой системы. Типа макинтош, типа Ubuntu Personal. Каждая лягушка делает свой дистр, но все как один сует пакеты с зависимостями.»

Проприетарщики этим и занимаются, что создают ОГРОМНЫЕ бандлы со своим софтом, дошло до того, что питон с полсотней нескучных «батареек» там лежит.

Я не пойму в чем проблема создавать пакетики? Они же в большинстве случаев автоматически создаются, зависимости находятся и прописываются автоматически.

Почему стремятся к dll hell?

 бандлы, ,

sniper21
()

Как отлаживать запуск MariaDB когда в messages вот так?

Форум — Admin
Aug 10 13:46:19 server systemd[1]: Starting MariaDB 10.1.34 database server...
Aug 10 13:46:19 server mysqld[8855]: 2018-08-10 13:46:19 139628363585792 [Note] /usr/sbin/mysqld (mysqld 10.1.34-MariaDB) starting as process 8855 ...
Aug 10 13:46:20 server systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Aug 10 13:46:20 server systemd[1]: Failed to start MariaDB 10.1.34 database server.
Aug 10 13:46:20 server systemd[1]: Unit mariadb.service entered failed state.
Aug 10 13:46:20 server systemd[1]: mariadb.service failed.

Как в таком случае дебажить запуск MariaDB?

 ,

sniper21
()

поставить позицию чтения на нужный элемент при помощи <algorithm>

Форум — Development

дана строка:

«abcdefgabcdfsdfsdvevmeveorvorevoervoervokerivekrvekrovekro»

я знаю что есть буква f и что я буду читать после третьей буквы

Обычный способ ясен(псевдокод):

int counter_f = 0;
for(;;)
{
   if (symbol == 'f') {
       counter++
   }
   if (counter == 3) {
   {
      //делаем дело
   } 
}

А как такое сделать при помощи <algorithm>

 ,

sniper21
()

Что я делаю не так при распаковке базы?

Форум — Admin

backup.sql ~ 300Gb

mysql -u root -p databasename < backup.sql

Распаковывается четвертый день на Xeon E5 с кучей Gb оперативы на рейд массив.

Так и должно быть или это как-то можно ускорить?

Да я вкурсе про мастер-слейв репликацию.

 , , ,

sniper21
()

Сборка rpm пакета из одного Python скрипта с зависимостями

Форум — Development

Хочу установить файл в /usr/bin, но скрипт неизвестно где ожидает найти этот файл. Файл simple-1.0.tar.gz в котором директория simple-1.0 в которой файл simple.py находится в SOURCES

Вопрос: где скрипт ожидает файл simple.py и как ему его указать?

Summary:         Simple python script
License:         MIT
Name:            simple
Version:         1.0
Release:         1%{?dist}
Source0:         %{name}-%{version}.tar.gz
Group:           Application/Multimedia 
BuildRoot:       %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildArch:       noarch
BuildRequires:   python-devel
Requires:        python
Requires:        python-requests

%description
Simple description for simple python script.

%prep
%setup -q

%install
rm -rf $RPM_BUILD_ROOT
install -m 0775 simple.py $RPM_BUILD_ROOT/usr/bin/simple.py

%clean
rm -rf $RPM_BUILD_ROOT

%files
/usr/bin/simple.py

%changelog
* Fri Jul 27 2018 Ycewc Rvdfvf <sdvsdvsdv@ssdvsdvdv.ru>
- test changelog

Это лог

#!/bin/sh

  RPM_SOURCE_DIR="/home/builder/rpmbuild/SOURCES"
  RPM_BUILD_DIR="/home/builder/rpmbuild/BUILD"
  RPM_OPT_FLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables"
  RPM_ARCH="i386"
  RPM_OS="linux"
  export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
  RPM_DOC_DIR="/usr/share/doc"
  export RPM_DOC_DIR
  RPM_PACKAGE_NAME="simple"
  RPM_PACKAGE_VERSION="1.0"
  RPM_PACKAGE_RELEASE="1.el6"
  export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
  LANG=C
  export LANG
  unset CDPATH DISPLAY ||:
  RPM_BUILD_ROOT="/home/builder/rpmbuild/BUILDROOT/simple-1.0-1.el6.i386"
  export RPM_BUILD_ROOT

  PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/usr/lib/pkgconfig:/usr/share/pkgconfig"
  export PKG_CONFIG_PATH

  set -x
  umask 022
  cd "/home/builder/rpmbuild/BUILD"
    [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}"
    mkdir -p `dirname "$RPM_BUILD_ROOT"`
    mkdir "$RPM_BUILD_ROOT"

cd 'simple-1.0'
LANG=C
export LANG
unset DISPLAY

rm -rf $RPM_BUILD_ROOT
install -m 0775 simple.py $RPM_BUILD_ROOT/usr/bin/simple.py

    /usr/lib/rpm/check-rpaths   /usr/lib/rpm/check-buildroot

    /usr/lib/rpm/redhat/brp-compress 
    /usr/lib/rpm/redhat/brp-strip /usr/bin/strip 
    /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip 
    /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump 
    /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 
    /usr/lib/rpm/redhat/brp-python-hardlink 
    /usr/lib/rpm/redhat/brp-java-repack-jars 

 , , ,

sniper21
()

директории для своего пакета с ПО

Форум — Development

Хочу собрать свой пакет со своим ПО. По задумке архитектуры файлов в Linux я должен поместить его в

* бинарник/скрипт  в /usr/local/bin
* всякие остальные файлы в соответствии каталогами (иконки в icons, примеры в examples) в /usr/local/share
* библиотеки в /usr/local/lib
* конфигурации в /usr/local/etc

Разумеется это будет rpm'ка/deb'ка

Вопросы:

  • Пока всё верно?
  • Как правильно в коде описывать пути до, скажем: /usr/local/share/icons или /usr/local/etc? Не правильно же будет писать полностью?

Да, да я знаю про 5 звезд XD

 , , пути

sniper21
()

mkfs.ext4 не создает раздел больше 1.8Tb на 4Tb диcке. Как так?

Форум — Admin

mkfs.ext4 /dev/sdb1

 , mkfs.ext4

sniper21
()

Чем создать файловую систему на RAID 1 массиве?

Форум — Admin

Из голой консоли.

Если, например я запускаю cfdisk, то я вижу только sda1.

Но RAID массива у меня два: RAID1 (sda/sdb) RAID 1(sdc/sdd)

как мне добраться до sdc/sdd ?

 , ,

sniper21
()

Распаковщик из python в php

Форум — Development
struct.unpack('!%df' % blockSize, buf)

! - big-endian, а %df - double/float?

buf по длине - 88 символов

в одном символе 4 байта типа float, соответственно в blockSize = 22

Как это переделать в PHP?

unpack('f', buf); // f - float

 , ,

sniper21
()

миграция работающей базы mariadb

Форум — Admin

Добрый день.

Столкнулся с задачей переезда на другой физический сервер работающей базы. Сделать это нужно без потери данных в момент переезда. Как это сделать?

Правильно ли я понимаю что для этого нужно подготовить две базы и делать синхронную репликацию мастер на старом сервере - слейв на новом, а потом слейв сделать мастером?

Если есть руководство грамотное как провернуть такой переезд может у кого завалялась ссылочка?

 ,

sniper21
()

Понимание потоков в python/tkinter и matplotlib. Объясните пожалуйста где ошибка?

Форум — Development

Если код вставить и запустить, он будет работать, но заблокирет окошкко от перемещения:

Вопрос как поправить и где чтобы потоки работали как надо, графики рисовали, а окошко не блокировалось?

import random
import threading
import time
import tkinter as tk
from queue import Empty, Queue
from time import time as timer
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg


def get_xy_from_db(id):  # generate dummy data
    #time.sleep(random.random())  # emulate blocking function
    list_x = list(range(1, 16))
    list_y = list(random.sample(range(0,100),15))
    res_lst = list_x + list_y
    return res_lst


def poll_db(id, emit):  # NOTE: interval is independant from the delay
    while True:
        #time.sleep(interval)
        emit(get_xy_from_db(id))


def poll_db_2(id, emit):  # NOTE: interval is independant from the delay
    while True:
        #time.sleep(interval)
        emit(get_xy_from_db(id))


def make_x_y(list_a):    
    done_x=list_a[:15]
    done_y=list_a[15:]    
    return done_x, done_y    


def start_polling_loop(root, q, delay):
    def loop():
        timeout_millis = round(delay - (1000 * timer()) % delay)
        root.after(timeout_millis, loop)
        a.clear()
        try:
            data = q.get(block=False)
            x, y = make_x_y(data)
            a.plot(x, y)
            canvas.draw()
        except Empty:
            return

    root.after_idle(loop)  # start


def start_polling_loop_2(root, q_2, delay):
    def loop():
        timeout_millis = round(delay - (1000 * timer()) % delay)
        root.after(timeout_millis, loop)
        a1.clear()
        try:
            data = q_2.get(block=False)
            x, y = make_x_y(data)
            a1.plot(x, y)
            canvas.draw()
        except Empty:
            return

    root.after_idle(loop)  # start

if __name__ == "__main__":
    root = tk.Tk()
    q = Queue()  # первая очередь для первого графика
    q_2 = Queue()  # вторая очередь для второго

    # соответствующие потоки
    threading.Thread(target=poll_db, args=[1, q.put], daemon=True).start()
    threading.Thread(target=poll_db_2, args=[2, q_2.put], daemon=True).start()

    start_polling_loop(root, q, delay=40)
    start_polling_loop_2(root, q_2, delay=40)

    f = Figure(figsize=(8, 4), dpi=100)

    a = f.add_subplot(1, 2, 1)  # расширим сетку для второго графика
    a1 = f.add_subplot(1, 2, 2)  # добавим второй график в сетку

    canvas = FigureCanvasTkAgg(f, master=root)
    canvas.show()
    canvas.get_tk_widget().grid(row=0, column=0)

    root.mainloop()

 , , , ,

sniper21
()

помогите исправить проблему(не добавляется в очередь функция с параметром) в скрипте на Python с matplotlib

Форум — Development

Смысл такой: нарисовать график при помощи get_latest_data(1) и через 5 секунд поменять его на данные из get_latest_data(2)

from threading import Thread
from queue import Empty, Queue
import time
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg#, NavigationToolbar2TkAgg
from matplotlib.figure import Figure

class tkChartGUI(tk.Frame):       

    def __init__(self, parent):
        tk.Frame.__init__(self, parent)   
        self.parent = parent
        self.initUI()

    def get_latest_data(self, dataid):
        x_array=[]
        y_array=[]
        if (dataid == 1):
            x_array=[1,2,3,4,5,6,7,8,9,10,11,12,13,14];
            y_array=[0.5,0.7,0.3,1.0,0.6,0.9,0.5,0.2,0.1,0.5,0.33,0.55,0.3,0.6] 
        if (dataid == 2):
            x_array=[1,2,3,4,5,6,7,8,9,10,11,12,13,14];
            y_array=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.1,1.2,1.3] 
        return (x_array, y_array)

    def initUI(self):
        self.parent.title("Simple chart")
        self.parent.geometry("800x600+300+100")

        result_queue = Queue()
        Thread(target=self.get_latest_data, args=[result_queue], daemon=True).start()

        x_array, y_array = self.get_latest_data(1)

        f = Figure(figsize=(5, 3), dpi=150)        
        a = f.add_subplot(111)
        a.set_xlabel("Values_X")
        a.set_ylabel("Values_Y")
        a.yaxis.grid(True, which='major')
        a.xaxis.grid(True, which='major')
        a.plot(x_array, y_array)

        canvas = FigureCanvasTkAgg(f, master=self.parent)
        canvas.show()                        
        canvas.get_tk_widget().grid(row=0,column=0)

        def display_result(a, q):
            x_array = []
            y_array = []
            try:                
                x_array = q.get(block=False) # get data
                y_array = q.get(block=False)                           
                a.plot(x_array, y_array)
                canvas.draw() 
            except Empty:
                #a.clear()                            
                timeout_millis = round(100 - (5000 * time.time()) % 100)
                self.parent.after(timeout_millis, display_result, a, q)
                 
                
        def get_result(q):
            x_array, y_array = self.get_latest_data(2)
            q.put(x_array) # put data in FIFO queue x coords array
            q.put(y_array) # put data in FIFO queue y coords array
        display_result(a, result_queue)

    def onExit(self):
        self.quit()

def main():
    root = tk.Tk()
    my_gui = tkChartGUI(root) 
    root.mainloop()

if __name__ == '__main__':
    main()

 , , ,

sniper21
()

как перехватить итоговый вывод awk без использования bash?

Форум — Development

awk работает так:

awk '{код программы}' file.txt
Т.е. каждую строку файла обрабатывает программой. Верно?

Вопрос: как перехватить итоговый вывод awk без использования bash?

Сейчас пишу так:

#!/usr/bin/env bash
$name=file.txt

result=$(awk '{код программы}' $name)

if [$result .. ]; then
echo ....
else
echo
fi
Хочу сделать полностью на awk.

 ,

sniper21
()

awk if-else в однострочнике

Форум — Development

Как сделать конструкцию if-else в однострочнике awk? Вывести одно число или другое в зависимоти от уловия

 , else,

sniper21
()

ICMP ping пример

Форум — Web-development

http://php.net/manual/ru/function.socket-create.php#101012

Вот так в примере описывается пакет:

$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";

Смотрим ICMP протокол, раздел формат пакета:

Тип - 8 байт,

Код - 8 байт,

Контрольная сумма - 16 байт

Вопрос1 и 2: где? что? (для данного пакета)

Вопрос3 и 4: как выглядит пакет с данными, которые отправляет утилита ping?

 , ,

sniper21
()

регистр - блок ячеек памяти. Что такое регистровая память и чем отличается от обычной?

Форум — Talks

Собственно вопрос в теме.

 , регистровая память

sniper21
()

RSS подписка на новые темы