• Как правильно настроить UFW на клиенте, чтобы трафик шел только через tun0 (или лучше IP использовать)?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Вообще-то это делается default route-ом. А так у вас и сам tun0 перестанет работать.
    Ответ написан
    2 комментария
  • Как скопировать SSH ключ на удалённую Ubuntu 18.04 при помощи ssh-copy-id?

    @vitaly_il1
    DevOps Consulting
    На удаленной машине:
    1) chmod 0600 ~/.ssh/authorized_keys
    2) открыть ~/.ssh/authorized_keys в редакторе и добавить публичный ключ
    Ответ написан
    Комментировать
  • Как принимать данные на сервер с определённого порта?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Самым простым способом будет использовать обычный Nginx, указав порт 20205 вместо стандартного 80-ого в конфигурации, а дальше — классическая настройка php-fpm.
    Ответ написан
    1 комментарий
  • Откуда синхронизировать время на объектах критической информационной инфраструктуры?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Любые действия на обьектах КИИ обычно должны быть согласованы с теми, кто отвечает за безопасность оных обьектов, а не с анонимами на тостере. Мы Вам тут насоветуем, а мордасом в пол Вам лежать :)
    Ответ написан
    Комментировать
  • Почему сайты на сервере работают медленно?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    На скриншоте LoadAverage около 8 при 48 ядрах и полно свободной памяти, то есть сервер не нагружен, если при этом приложение работает медленно, можно предположить, что оно ожидает чего-то. Может оно обращается к внешнему API которое медленно отвечает?

    Рекомендую проверить настройки DNS и убедится, что используется локальный кеширующий DNS сервер, а не публичный - дело может быть в том, что публичные DNS серверы тротлят если к ним часто обращаются, так что если приложению надо обращаться к внешнему API оно будут часто резолвить имена, что приведёт к задержкам.
    Ответ написан
    2 комментария
  • Почему сайты на сервере работают медленно?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Гадание на листьях опавших с ветвей сакуры нифига не даст.

    Тупо ставьте метки по ходу выполнения кода, в конце считайте время выполнения кусков, смотрите какой кусок тормозит, разбивайте его на более мелкие таймфреймы, пока не вычлените проблемный кусок. Из опыта - 90% что тормозят запросы в бд, но вышеописанным способом это легко вычисляется.

    Так же есть вероятность что проблема не на бэкенде, а в подгрузке ресурсов типа фонтов или скриптов со сторонних сервисов, которые сейчас работают не очень стабильно (ну да, "а что случилось?"). Опять же легко проверяется разницей между выполнением всего кода и полной загрузкой страницы.
    Ответ написан
    2 комментария
  • Автоматизация скачивания, разархивирования файла из интернета в ubuntu server?

    @kisaa
    Скачать файл можно командой wget
    Распаковать .zip-архив - командой unzip
    Уточнить опции и параметры - командой man wget, man unzip
    Ответ написан
    Комментировать
  • После подключения бд в Docker все данные стерлись, это нормально?

    @momoru_kun
    'ENGINE': 'django.db.backends.sqlite3',

    Замените 'ENGINE' c django.db.backends.sqlite3 на django.db.backends.mysql
    Сейчас у вас из-за бэкенда БД sqlite просто создается база данных django-app-db1
    Ответ написан
    1 комментарий
  • Альтернатива screen?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Напиши сервис для systemd , будет запускать и останавливать его без всяких идов. Вывод\ввод можно через сокеты достать хоть в пайп хоть в удп\тсп
    Ответ написан
    Комментировать
  • Как это убрать в VS code?

    bingo347
    @bingo347
    Crazy on performance...
    За это отвечает свойство "editor.cursorStyle" в настройках
    Ответ написан
    Комментировать
  • Почему запустив сервер Django с помощью Docker, он не работает?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000", "--settings=mysite.settings.prod" ]
    Ответ написан
    Комментировать
  • Как в tcpdump задать номер файла в имени до расширения pcap?

    @Sozdavan
    Вы можете указать формат имени файла для tcpdump, используя параметры -C и -W. Параметр -C указывает максимальный размер файла в МБ перед созданием нового файла захвата, а параметр -W указывает максимальное количество создаваемых файлов. Например, для захвата данных в формате «name_01.pcap», «name_02.pcap» и т. д. вы можете использовать следующую команду:
    tcpdump -i any -s0 -vvv -w /home/Traces/name_%02d.pcap -C 50 -W 50 -G 21600 host 192.168.0.1


    %02d в имени файла — это строка форматирования, которая будет заменена номером файла, а число будет дополнено нулями до двух цифр. В качестве альтернативы вы можете использовать только параметр -C, и он автоматически повернет и добавит числовой суффикс к данному имени файла

    tcpdump -i any -s0 -vvv -w /home/Traces/name.pcap -C 50 host 192.168.0.1


    Это создаст такие файлы, как name_1.pcap, name_2.pcap, name_3.pcap и так далее
    Ответ написан
    3 комментария
  • Как подать питание на камеру через витую пару?

    paran0id
    @paran0id
    Умный, но ленивый
    PoE.

    Покупаете камеру с поддержкой PoE и PoE-инжектор. Подключаете инжектор между микротом и камерой.

    Может и без инжектора обойдется, если у микротика есть порты с PoE (не знаю всего ассортимента, но вроде были такие).
    Ответ написан
    1 комментарий
  • Как сократить данный код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Тут много путей уменьшить код.
    Можно начать с того, что у вас многократно повторяется.
    К примеру,
    if message.text == '26.01':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            bt1 = types.KeyboardButton('8:00')
            bt2 = types.KeyboardButton('9:00')
            bt3 = types.KeyboardButton('10:00')
            bt4 = types.KeyboardButton('11:00')
            bt5 = types.KeyboardButton('12:00')
            bt6 = types.KeyboardButton('13:00')
            bt7 = types.KeyboardButton('14:00')
            bt8 = types.KeyboardButton('15:00')
            bt9 = types.KeyboardButton('16:00')
            bt10 = types.KeyboardButton('17:00')
            bt11 = types.KeyboardButton('18:00')
            bt12 = types.KeyboardButton('19:00')
            bt13 = types.KeyboardButton('20:00')
            bt14 = types.KeyboardButton('21:00')
            back11 = types.KeyboardButton('Назад')
            markup.add(bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9, bt10, bt11, bt12, bt13, bt14, back11)
            bot.send_message(message.chat.id, text='Выберите удобную вам дату для записи', reply_markup = markup)

    повторяется несколько раз. Значит, этот фрагмент можно записать один раз и затем многократно вызывать, подставляя только меняющиеся элементы.

    Но и внутри видно многократное повторение нумерованной переменной, это явный признак плохого кода.
    Эту проблему можно решить разными способами. В данном случае, когда значения идут равномерно (час за часом), можно их просто сгенерировать, рассчитать, и поместить в список.
    Например:
    first_hour = 8
    last_hour = first_hour + 14
    buttons = [f'{current}:00' for current in range(first_hour, last_hour)]
    print(buttons)
    print(buttons[0])

    И этот список и передавать в нужное место вместо bt1, bt2, bt3, bt4, bt5, …

    И не надо его всякий раз генерировать, один раз достаточно, потом в нужных случаях вызывать.

    Следует отметить, что вам пока рано заниматься ботами. Сделайте что-то попроще, калькулятор например, игру «быки-коровы»… я не шучу.
    Ответ написан
    Комментировать
  • Можно ли через nginx разделить трафик в зависимости от ip подсети?

    iMedved2009
    @iMedved2009
    Не люблю людей
    geo $client  {
        default third;
        10.50.0.0/16 second;
        178.50.0.0/16 first;
    }
    
    server{
    location / {
      try_files $uri.$client $uri = 404;
    }
    }


    в зависимости от ип будет одавать страницу с добавлением "first", "second" или "third"
    Ответ написан
    1 комментарий
  • При попытке написать /start ошибка, в чем дело?

    @igor6130
    Видать из-за этого
    chatId = message.chat.Id
    id в message должно быть с маленькой буквы.

    А в самой функции start_message у вас должно быть
    message.chat.id
    вместо
    message.chat.chatId

    Использованы неверные атрибуты. Собственно, об этом и ошибка.
    Ответ написан
    7 комментариев
  • У меня проблема какаята,где?

    @rPman
    Проверь наличие записи с искомым id в json и как то это обрабатывай, по уму подумай а есть ли .json файл вообще, проверяй ошибки записи и т.п.

    А еще ты обманываешь пользователей :) ты сначала им говоришь что ранг увеличил и только потом его увеличиваешь, а если в этот момент что то произойдет?

    Кстати подумай хорошо, что случится, если места для записи .json файла не хватит (или любая другая проблема) - старое содержимое будет утеряно а новое не будет записано до конца. Хорошим способом работы со своим хранилищем на файлах является подход - любую перезапись делай созданием нового временного файла с записываемым содержимым, если запись успешна - удаляешь старый файл и переименовываешь временный в итоговый... таким образом любая ошибка в этом алгоритме (если их отслеживать) не уничтожит данные, хотя бы старые.

    Еще совет, сохраняй все не в один огромный файл а в много маленьких (отдельный каталог для них), заводи на каждого user_id свой файл, где этот идентификатор в имени файла. В этом случае твой код не будет тормозить при большом количестве пользователей и работать с такой "базой" гораздо удобнее (файловая система это типичная key-value база данных)

    p.s. ну конечно лучше пользоваться готовыми базами данных, нет нужды изобретать паровоз, посмотри sqlite - это sql база данных на основе файла, нет никаких серверов и все просто и удобно
    Ответ написан
    6 комментариев
  • Как сделать рассылку картинок с помощью pyTelegramBotAPI?

    @TKDBOT
    Учу python. Готов к конструктивной критике.
    Картинка отправляется методом send_photo. Так же там есть параметр caption - он является описанием т.е. текст к картинке. А форматирование указываете в параметре parse_mod.
    Ответ написан
    2 комментария
  • Сайт с доступом только по https. Плюсы и минусы?

    Текущая общепринятая практика это редирект в https на 80м порту и HSTS на 443м. Использование HSTS приводит к тому, что клиент никогда не будет использовать HTTP с сайтом, даже если явно указать http в URL. Дополнительно, можно отправить домен в список HSTS preload В США практика официально закреплена в документе The HTTPS-Only Standard, обязательном для правительственных агентств, в нем есть отдельное упоминание что:

    Allowing HTTP connections for the sole purpose of redirecting clients to HTTPS connections is acceptable and encouraged. HSTS headers must specify a max-age of at least 1 year.
    .

    т.е. разрешать подключения к 80му порту с целью редиректа не толко допустимо, но и желательно.

    Закрытие 80го порта не обеспечивает более высокой защиты чем редирект + HSTS, т.к. в случае MitM атаки атакующий может перехватить запрос к 80му и подменить ответ независимо от того открыт он или нет на сервере назначения. Т.е. закрытие 80го порта приводит к нежелательным эффектам без какого-либо повышения уровня защищенности.
    Ответ написан
    Комментировать
  • Система управления майниг - ЦОДом, такое вообще существует?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Zabbix + redmine + умные розетки на каждый асик.
    Розетки ищите в серверном оборудовании вот прям счас не помню но есть такие девайсы.
    Вам нужна именно серверная версия с snmp.
    Дальше просто настраиваете заббикс, пусть будут графики и триггеры на превышение.
    В триггерах создаете задачу в редмайне и по желанию уведомление для клиента.
    Ответ написан
    Комментировать