Задать вопрос
  • Действие на сервере при подключении по ssh?

    @brar
    Попробуйте свой бот в телеге. Уведомления на порядок удобнее и оперативнее, чем почта.
    Опишу для debian. (для других дистров не будет сильно отличаться). Если не Вам, то может кому-то другому пригодится всё готовое:
    Создаеете файл /usr/local/bin/telegram_alert.sh со следующим содержимым:
    #!/bin/bash
    KEY="АПИ_КЛЮЧ:ВАШЕГО_БОТА"
    URL="https://api.telegram.org/bot$KEY/sendMessage"
    TARGET="айдишник_контакта_или_группы_куда_слать_уведомления"
    DATE1="$(date "+%H:%M:%S")"
    DATE2="$(date "+%d %B %Y")"
    GEO="$(curl ipinfo.io/$PAM_RHOST)"
    TEXT="*$PAM_USER* залогинился на *$HOSTNAME* 
    Время: $DATE1
    Дата: $DATE2
    Адрес: $PAM_RHOST
    Service: $PAM_SERVICE
    TTY: $PAM_TTY
    GEO: ${GEO}"
    PAYLOAD="chat_id=$TARGET&text=$TEXT&parse_mode=Markdown&disable_web_page_preview=true"
    curl -s --max-time 10 --retry 5 --retry-delay 2 --retry-max-time 10 -d "$PAYLOAD" $URL > /dev/null 2>&1 &

    В файл /etc/pam.d/sshd добавляете/редактируете строчку:
    session optional pam_exec.so type=open_session seteuid /usr/local/bin/telegram_alert.sh

    Будете получать вот в таком виде:
    5f36480e9db84988952574.png

    Как создать своего бота - это отдельный вопрос. И он очень лёгок, а инструкций в сети полно.
    Ответ написан
  • Как послать сигнал на дочерний sh процесс?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    sh -c "java -jar ol.jar"
    Зачем такая команда, если можно сразу java -jar ol.jar?

    Я посылаю сигналы на PID sh процесса, и только 9 сигнал срабатывает (логично, он же его убивает), остальные сигналы sh съедает сам и не посылает дочернему процессу.

    sh ничего не съедает и передавать автоматом в дочерние процессы он может только sighup, который он не передаст поскольку у вас интерактивная сессия, и сигнал 9 до процесса не доходит - процесс прибивается ядром.

    Собственно пока не будет понятно, зачем вы запускаете sh из которого запускаете jar, не очень понятно что происходит.

    Возможно, вам нужно это делать вот так:
    java -jar  ol.jar &
    echo $! > ol.pid

    и следовательно получать pid джава процесса в файле, в дальнейшем с ним работать.
    Ответ написан
    Комментировать
  • Какая ОС Linux имеет самую высокую защиту?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Если в голове не хлебушек, то любая ОС безопасная. На винде лет 7 уже антивируса нет - проблем не замечено. Про линух вообще молчу.
    Ответ написан
    4 комментария
  • Какая ОС Linux имеет самую высокую защиту?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Настроенная грамотным специалистом и в руках опытного пользователя.
    Ответ написан
    Комментировать
  • Что сейчас используют веб-дизайнеры Figma или Photoshop?

    @archelon
    знать нужно и то, и другое.
    и третье-четвертое не помешает: иллюстратор, корел
    и zeplin
    Ответ написан
    Комментировать
  • Windows (без AD и понижения прав) - как запретить пользователям удалять софт?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Я имярек намё обязуюсь не удалять софт, дата подпись
    Ответ написан
    8 комментариев
  • Какой выбрать дистрибутив линукс для вкатывания в консоль и программирования?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Я обычно даю такой ответ - брать тот, по которому есть рядом гуру :)

    Если чисто для себя - бубунта/минт (ну или если не хочется быть "как все" - дебиан)
    Если потом в прод - центос
    Если хочется понять, как работает сам линух - арч/генту/слака (там без понимания оно просто не заработает нихрена)
    Если хочется убиться об стену - LFS :)
    Ответ написан
    Комментировать
  • Почему не включается изоляция ядра?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Указанные драйвера — это от ПО телефона Samsung. Очень старые. Удалите само ПО.

    А если ПО уже давно нет, можно просто тот inf файл удалить?
    Нужно сами драйвера удалять с "удалением файлов". Если в диспетчере не найдёте, то
    set devmgr_show_nonpresent_devices=1
    cd %SystemRoot%\System32
    start devmgmt.msc

    и "Вид", "Показать скрытые устройства".
    Ответ написан
    1 комментарий
  • Freeradius и NAT?

    hint000
    @hint000
    у админа три руки
    ip firewall filter export
    Вангую, что там 1812/udp и 1813/udp могут быть не разрешены.
    Ответ написан
    5 комментариев
  • Как частично обновить контейнер на сервере?

    @rionnagel
    ковырятель
    Вынести нужный вам файл в persistence volume?
    Ответ написан
    2 комментария
  • Как добавить заголовок в NGINX только для определенного IP?

    @edo1h
    Что-то вроде этого:
    map $http_x_forwarded_for $cachefile_header {
        "8.8.8.8"    $cachefile;
        default      "";
    }
    …
    
    server {
        …
        location "/" {
            …
            add_header X-Cache-File $cachefile_header;
        }
    }


    P. S. неплохая статья про map (там упоминается и про "if is evil")
    Ответ написан
    8 комментариев
  • Как запретить доступ к сайту из USA но разрешить user-agent Googlebot?

    @dodo512
    map "$geoip_country_code,$http_user_agent" $deny {
        default           0;
        ~^US.*Googlebot   0;
        ~^US              1;
        ~^CN              1;
    }
    
    server {
        if ($deny) {
            return 403;
        }
    Ответ написан
    6 комментариев
  • Как найти битый *.png файл?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    ...но получаю только ответ Could not find file: *.png

    Зачем же вы подсовываете тулзе несуществующие файлы? Подсовывайте существующие:
    find . -type f -name "*.png" -exec pngcrush -n -q "{}" \;
    Ответ написан
    1 комментарий
  • Как отобразить GOшный сайт в Firefox?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Если всё общение происходит по HTTP - непонятно, зачем эта кривота с кучей самоподписанных сертификатов и кастомных портов. Разводите сервисы нгинксом по разным доменам/урлам и выпускаете валидные сертификаты через Let`s Encrypt.
    Ответ написан
    Комментировать
  • Есть ли разницы в производительности веб-сервера под CentOS 7 и CentOS 8?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    Разницы, ради которой стоит переустанавливать ОС не будет. Это же не РНР 5.5 на 7.4 менять...

    От грамотной настройки зависит гораздо больше обычно, чем от свежести версии. Если случается какой-то прямо прорыв в производительности - обычно об этом активно пишут и всё такое.
    Ответ написан
    Комментировать
  • Какой годный курс, а лучше книгу по docker, docker-compose, ansible?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Все хорошие инструменты - необычайно гибкие в использовании.
    Поэтому никакой курс не сможет раскрыть инструмент в различных вариантах, не хватит времени.
    Практически в каждом проекте что-то настраивается под себя, так как это удобно или как придумано именно здесь и сейчас.

    К документации нужно просто добавлять практику на каком-то хобби проекте, или реальном проекте, чтобы стояла конкретная задача. И все.
    Ответ написан
    7 комментариев
  • Не срабатывают правила iptables, чяднт?

    semenenko88
    @semenenko88
    Системный администратор
    Может соединения уже в established висят. Они могут на роутере висеть даже.
    Ответ написан
    4 комментария
  • Необходимо ли выносить docker окружение в отдельный репозиторий?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Правильно - хранить код в одном репозитории.
    На проде не требуется даже иметь гит или что там у вас в качестве системы контроля версий.
    Нужно настраивать CI/CD так, чтобы в контейнер на прод выкатывались только нужные файлы и каталоги, ничего лишнего.
    Очень удобно, когда в девелоперском окружении код работает без докера, но сопутствующие вещи вроде БД и прочих сервисов удобно держать в контейнерах и на девелоперской машине. Так проще развёртывать среду разработки и быстрее вводить сотрудников в процесс. Технически нет особых проблем, чтобы настроить удалённую отладку прямо внутри контейнера. так можно приблизить девелоперское окружение к продовой конфигурации.

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

    Храните всё, что нужно для CI/CD в том же репозитории где код. Там же у вас лежат тесты (не нужные в продакте), вспомогательные скрипты, артефакты тулинга и прочее.
    Поищите, в гитхабе есть много так называемых "КукиКаттеров". Это инструмент, для шаблонизации проектов на разных стеках. Как правило в созданной по такому шаблону заготовке проекта уже есть всё не обходимое для CI/CD.
    Ответ написан
    6 комментариев
  • Как узнать через консоль какие диски установлены в системе?

    zeond
    @zeond
    dev & ops
    С помощью lshw. Для мира RedHat и CentOS она ставится вот так:

    yum -y install epel-release
    yum -y install lshw


    дальше краткий список дисков:
    lshw -short | grep disk

    если подробно:

    lshw | less
    Ответ написан
    Комментировать
  • Как организовать работу с mongodb и докером на локалке и сервере?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Ни в коем случае не пушить туда-сюда.
    • В идеальном случае ваш проект должен поддерживать миграции:
    • Каждая ревизия кода, которая нарушает совместимость с БД относительно предыдущей, должна содержать скрипт миграции. В этом скрипте создаётся структура, модифицируются старые данные, переименовываются поля и т.д. Иногда такие скрипты делают двунаправленными, чтобы поддерживать обратные миграции.
    • В БД нужно хранить версию или номер ревизии, которой соответствует текущее состояние БД.
    • При запуске приложения нужно проверять версию и выполнять цепочку миграций, необходимых для приведения версии к требуемому состоянию.

    Так вы можете добиться того, чтобы продуктовая БД была отдельно, тестовая отдельно, девелоперская отдельно. Очень плохая идея работать на девелоперской машине с данными из продовой базы. Так происходят утечки перс-данных.

    Монга - это schema less БД, которая толерантно относится структуре коллекций и не валится при запросе несуществущих полей. Нужно стараться писать код максимально толерантно к отсутствию наполнения БД.

    В любом случае у вас в БД есть обычно:
    1. структура (в случае монги, как я уже сказал, это не так важно)
    2. справочники
    3. пользовательские данные
    4. производные данные (кэш), которые можно безболезненно удалить, а затем они перегенерятся сами по мере запросов.

    Нужно писать код так, чтобы он всю структуру и технические справочники, отсутствующие в предоставленной БД и необходимые для работы, умел инициализировать сам. Или, на худой конец, сделайте команду или скрипт init_db.

    Если какие-то тестовые данные нужны для тестов или отладки, то можно сделать скрипт, который заполнит БД ими. Это называется фикстуры.

    Никогда не храните код в БД. Всякие хранимые процедуры и прочее в БД - это зло. Код должен быть в системе контроля версий, а БД к этому не приспособлены. Если уж нужны хранимки, то храните их в системе контроля версий и заливайте их в БД при инициализации или миграциями.
    Ответ написан
    2 комментария