• Как можно найти все компьютеры с слабыми HDD дисками в домене?

    @NortheR73
    системный инженер
    PowerShell-скрипт с командлетом Get-PhysicalDisk вернет вам нужную информацию.
    Можно обходить скриптом все компьютеры или добавить скрипт в GPO
    Ответ написан
    3 комментария
  • Как поставить пароль на архив tar/gzip?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB > $BACKUP_DIR/mysql.sql
    + tar -czvf $ARCHIVE $BACKUP_DIR


    Странное применение targzip в данном случае. совершенно бессмысленное.
    Юзай просто zip, у него есть -e (encrypt) опция, но там слабенькая защита. уж проще openssl, как указали в другом ответе.

    Чтоже касается tar. Весь смысл тар и gzip в том, что они умеют работать с потоком, а не файлом. Поэтому то, что вы сперва сохраняете в файл, а потом отдельно еще в tar/gz - бессмысленная работа, которая ничего не дает. Вдобавок и сам тар там не нужен, у вас же один файл.
    Поэтому можно сделать так:
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip > $BACKUP_DIR/mysql.gz


    и потом шифровать файл чем угодно.
    Или сразу:
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip | openssl enc -aes-256-cbc -out encrypted $BACKUP_DIR/mysql.gz.encrypted

    Пароль или руками или перенаправить
    mysqldump -u $USER -p$PASS --ignore-table=myBase.log_chat --ignore-table=myBase.log_main --routines $DB | gzip | openssl enc -aes-256-cbc -out encrypted $BACKUP_DIR/mysql.gz.encrypted<<<"mysecretpassword"
    Ответ написан
    Комментировать
  • Взаимодействие уровней сетевых моделей?

    vabka
    @vabka
    Токсичный шарпист
    Никто никуда не стучится.
    Просто "открытие http соединения" подразумевает собой открытие TCP.
    Открытие TCP подразумевает, что сетевая карта будет отправлять IP-датаграммы и так далее.
    Ответ написан
    8 комментариев
  • Почему не записываются данные в бд SQLITE?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    После запросов, выполняющих изменения в БД, надо вызывать
    self.connection.commit()

    И имена колонок и таблиц нельзя брать в одинарные кавычки. Потому что в одинарных кавычках пишутся строки.
    И если даже иногда sqlite и смотрит сквозь пальцы на такую ошибку (когда она может понять по контексту, что имеется в виду), это не значит, что так будет везти всегда.
    Строка 'money' никогда не будет равна числу.
    Ответ написан
    8 комментариев
  • Почему не записываются данные в бд?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Мужчина, вы издеваетесь?
    Я вам уже раз пять повторил ответ на этот вопрос:

    имена колонок и таблиц нельзя брать в одинарные кавычки. Потому что в одинарных кавычках пишутся строки.
    И если даже иногда sqlite и смотрит сквозь пальцы на такую ошибку (когда она может понять по контексту, что имеется в виду), это не значит, что так будет везти всегда.
    Строка 'money' никогда не будет равна числу.
    Ответ написан
    3 комментария
  • Как отключить задания google в планировщике задач?

    @Zershon
    Системный администратор
    Через powershell легче всего
    #Получение информации и запуск заданий планировщика из PowerShell
    Get-ScheduledTask -TaskPath "\" | ? state -ne Disabled
    #Получение подробной информации о конкретном задании
    Get-ScheduledTask CheckServiceState_PS| Get-ScheduledTaskInfo
    #Отключить задание
    Get-ScheduledTask CheckServiceState_PS | Disable-ScheduledTask
    #Включить задание
    Get-ScheduledTask CheckServiceState_PS | Enable-ScheduledTask

    #Удалить задание(я):
    Unregister-ScheduledTask -TaskName "OneDrive*"

    А массово можно уже удаленно, написав батник например, политикой на домен или чем удобнее.
    Ответ написан
    Комментировать
  • Как пробросить в виртуальную машину Hyper-V несколько VLAN?

    @zapililirad
    Транковым порт виртуального коммутатора, к которому подключается виртуальный адаптер, сделать можно.
    Используйте командлет Set-VMNetworkAdapterVlan с параметрами -Trunk и -AllowedVlanIdList.
    Далее настраивайте транковое соединение в гостевой ОС.
    Ответ написан
    7 комментариев
  • Как проверить, заканчивается ли строка искомым словом?

    vabka
    @vabka
    Токсичный шарпист
    'Абракадабра112_kanal.xls'.endswith('.xls')
    https://docs.python.org/3/library/stdtypes.html#st...
    Ответ написан
    Комментировать
  • Как изменить TTL всего выходного трафика в MikroTik?

    @PAPIruss
    Мак адрес не участвует в мобильных сессиях. Менять необходимо IMEI, скажем на нулевой или какой то другой, как вариант от сломанного смартфона или GSM телефона. В случае с микротиком этого достаточно + change TTL конечно же. Проверенно все работает. У микротика на их LTE модемах (R11e к примеру) мак на всех одинаковой и по базам производителей он вообще не бьется, таким образом не понятно что это...
    Ответ написан
    1 комментарий
  • Как изменить TTL всего выходного трафика в MikroTik?

    akelsey
    @akelsey
    У меня такой вариант прекрасно работает. (интерфейс не указывайте, pathtrough=yes)
    /ip firewall mangle
    add action=change-ttl chain=postrouting new-ttl=set:65 passthrough=yes
    Ответ написан
    Комментировать
  • Нужен ли класс threading.Lock?

    @deliro
    Скопируй и запусти две разных версии кода.

    Без Lock

    from threading import *
    
    def work(i):
        for _ in range(100):
            print(f"hello i'm a thread #{i}")
    
    t1 = Thread(target=work, args=(1,))
    t2 = Thread(target=work, args=(2,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()



    С Lock

    from threading import *
    
    lock = Lock()
    
    def work(i):
        for _ in range(100):
            with lock:
                print(f"hello i'm a thread #{i}")
    
    t1 = Thread(target=work, args=(1,))
    t2 = Thread(target=work, args=(2,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()



    Как можешь заметить, первый вариант иногда печатает две строки на одной, а иногда печатает пустые строки

    Ещё примеры

    Без Lock

    from threading import *
    from time import sleep
    
    
    class GlobalState:
        def __init__(self, x):
            self.x = x
            
        def set_x(self, x):
            self.x = x
    
    def reader(state: GlobalState):
        if state.x % 2 == 0:
            sleep(0.01)  # simulate OS context switch
            print(f"{state.x=} is even")
        else:
            print(f"{state.x=} is odd")
            
    
    def changer(state: GlobalState):
        state.set_x(state.x + 1)
    
    state = GlobalState(2)
    t1 = Thread(target=reader, args=(state,))
    t2 = Thread(target=changer, args=(state,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()


    С Lock

    from threading import *
    from time import sleep
    
    
    class GlobalState:
        def __init__(self, x):
            self.x = x
            self.lock = Lock()
            
        def set_x(self, x):
            self.x = x
    
    def reader(state: GlobalState):
        with state.lock:
            if state.x % 2 == 0:
                sleep(0.01)  # simulate OS context switch
                print(f"{state.x=} is even")
            else:
                print(f"{state.x=} is odd")
            
    
    def changer(state: GlobalState):
        with state.lock:
            state.set_x(state.x + 1)
    
    state = GlobalState(2)
    t1 = Thread(target=reader, args=(state,))
    t2 = Thread(target=changer, args=(state,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()


    Ну и совсем упоротый пример для тех, кто говорит, что list — threadsafe (что фактически является истиной, но логически не всегда) и не нужно использовать Lock:
    Открыть

    from threading import *
    from random import *
    
    class GlobalState:
        def __init__(self):
            self.x = []
            
        def do_something_changing(self):
            if random() < 0.5:
                self.x.append(1)
            elif self.x:
                self.x.pop()
    
    def reader(state: GlobalState):
        for _ in range(10000000):
            if len(state.x) % 2 == 0:
                if len(state.x) % 2 != 0:  # wtf how it's possible?
                    print(f"length {len(state.x)} was even before context switch")
    
    def changer(state: GlobalState):
        for _ in range(10000000):
            state.do_something_changing()
    
    state = GlobalState()
    t1 = Thread(target=reader, args=(state,))
    t2 = Thread(target=changer, args=(state,))
    t1.start()
    t2.start()
    t1.join()
    t2.join()



    И напоследок. Хватит программировать (или пытаться) на тредах. Это сложно и никому не нужно. Давно существуют куда более удачные реализации использования всех ядер процессора (csp например в golang). А если треды используются для IO (а в питоне они в 99.9% используются именно для IO), то давно есть и довольно юзабельный asyncio.
    Ответ написан
    Комментировать
  • Как из строки получить список?

    yupiter7575
    @yupiter7575
    Python программист
    Ответ написан
    Комментировать
  • Как убрать повторяющиеся слэши в .htaccess?

    @ShamblerR
    Дааю сразу все поскольку в свое время задолбало для каждого проекта делать все заново, по этому сейчас просто вставляю кусок и все.
    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$  
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d   
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$      
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]     
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    5 комментариев
  • Удалили аккаунты,и ушли все боты.Что делать?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Что можно поделать

    Написать в тех. поддержку Телеграм. ¯\_(ツ)_/¯
    Ответ написан
    Комментировать
  • Разрешено ли оставлять страницы с паспортными данными пользователей открытыми?

    vabka
    @vabka
    Токсичный шарпист
    Как я понял из 152-фз, это незаконно. Данная ситуация подпадает под определение "Угроза безопасности ПД", а оператор ПД обязан с ними бороться.

    Ссылка на 152-ФЗ
    Ссылка на статью 19 этого закона, об обязанностях оператора ПД.
    Ответ написан
    6 комментариев
  • Почему функция на python выдает ошибку спустя 40 минут работы?

    petermzg
    @petermzg
    Самый лучший программист
    Так в except рекурсивно вызываете. А через 40 минут наверное начинает запрос выдавать ошибку, возможно из-за протухания токена.
    Ответ написан
    2 комментария
  • Как перевести Фарады в Ампер*часы?

    @throughtheether
    human after all
    В первой версии допустил неточность.
    Пусть у вас емкость конденсатора X [фарад], напряжение Y [вольт]. Тогда заряд на нем Q=XY [кулон] = XY[ампер*секунда] = XY [ампер * час/3600]=XY/3600 [ампер*час].
    Ответ написан
    5 комментариев
  • Где взять бесплатный хостинг для маленького python бота?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Неужели на aiogram не будет работать?

    Можно амазон VPS на год взять
    Ответ написан
    7 комментариев
  • Sublime text 3 не воспринимает telebot, что я сделал не так?

    stympel
    @stympel
    подпивасник
    Создайте виртуальное окружение, активируйте его
    python3 -m venv venv
    source venv/bin/activate    # Linux
    venv/Scripts/activate         # Windows

    Установите библиотеку правильно
    pip install pyTelegramBotAPI
    Еще можно удалить telebot, который установлен неправильно, если он все таки установлен
    pip uninstall telebot
    Ответ написан
    Комментировать