• Как выйти из двух пользователей в Linux, и при этом выполнить команду один раз?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    И не будет, ведь такая команда будет исполняться в одном shell, а не в двух разных. После первого exit дальше уже всё, остаток будет проигнорирован.

    Способы есть:

    1. Из суперпользователя убить shell пользователя. Некрасиво и неудобно, но закроет оба шелла.

    2. Переключение в суперпользователя оформить сразу с выходом, тогда выход из внутреннего сделает выход и из внешнего, например:

    sudo -i; exit

    Недостаток - если не удастся правильно ввести пароль - сразу же и выкинет. Ну, можно поразбираться с кодами возврата, чтобы не делать exit.

    3. Вместо предыдущего можно сделать exec, тогда запускаемая команда заместит текущий shell, а не будет запущена как дочерний процесс:

    exec sudo -i

    Недостаток тот же - если не ввести правильно пароль, то выкинет.

    Но в целом я не вижу во всём этом смысла. Выход можно делать комбинацией Ctrl-D. Нажать дважды Ctrl-D ничто не мешает, это даже удобнее.
    Ответ написан
    2 комментария
  • Можно ли разветвить патч корд на 2 wifi роутера?

    Провайдер тебе даёт всего 1 IP адрес, по тому именно разветвить тебе не получится, как ни старайся (как правило)

    Вставляй кабель от провайдера в wan-порт первого роутера.
    От первого роутера потом тащи кабель до второго.
    Второй роутер переведи в режим точки доступа.

    Таким образом за маршрутизацию и поддержание локальной сети будет отвечать первый роутер.
    Второй будет выполнять лишь роль коммутатора и точки доступа к этой сети.

    (сделано допущение, что "роутером" названо домашнее устройство с функциями маршрутизатора и wifi-точки доступа)
    Ответ написан
    Комментировать
  • Каков уровень надежности подключения SSD дисков по NVMe?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    строго говоря - такой же среднестатистический, как и по всей больничке ;)
    Ответ написан
    Комментировать
  • Ошибка при использовании grep на сервере?

    fzfx
    @fzfx
    18,5 дм
    У меня стойкое ощущение, что ваш греп залип на работе с каким-то устройством или FIFO-буфером. Можете попробовать добавить параметр --devices=skip, чтобы пропускать (игнорировать) всё, кроме файлов и симлинков.
    Ответ написан
    1 комментарий
  • Объясните пожалуйста как работает пинг?

    @SunTechnik
    Ping замеряет время прохождения пакета от Вас до точки назначения и обратно.

    По пути пакеты передаются от одного маршрутизатора - другому.
    Примерный путь от Вас до точки назначения можно оценить с помощью команды traceroute/ tracert.

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

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

    Основной - скорее цена канала и его загрузка.

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

    И да, у интернета нет единого хозяина.
    Поэтому даже Ваш провайдер не всегда модет повлиять на маршрут прохождения пакетов.
    Ответ написан
    Комментировать
  • Как выяснить, какая служба/программа/скрипт генерирует SNMP-запросы во вне?

    hint000
    @hint000
    у админа три руки
    sudo netstat -upnc | grep ":161 \|:162 "
    161\UDP и 162\UDP - это порты, которые использует SNMP
    здесь sudo требуется, чтобы увидеть информацию о процессах, без sudo команда показывает остальную информацию, кроме номеров и имён процессов.
    -с нужно для постоянного обновления, т.к. на момент запуска может не быть трафика по указанным портам; прерываете команду, когда заметите полезный вывод.
    пробел после 161 и 162 нужен, чтобы не было мусора в выводе.
    Ответ написан
    Комментировать
  • Как в linux запускать скрипт только после перезагрузки?

    @pfg21
    ex-турист
    создаешь сервис анонса и в нем прописываешь в параметре After сервисы, запуск которых необходимо ждать, через пробел
    After= ... that the listed unit is fully started up before the configured unit is started.

    к примеру
    After=Apache.service
    и тогда сервис анонса запустится только после запуска Apache.service

    тип прописываешь однократный запуск
    Type=oneshot
    в ExecStart прописываешь строчку исполнения для отправки анонса
    и ок
    Ответ написан
    5 комментариев
  • Nginx возвращает 404 при запросе на существующий маршрут. Что делать?

    smilingcheater
    @smilingcheater
    location /{                                                                                                             
        try_files $uri $uri/ =404;

    Вы говорите NGINX'у - попробуй сначала запрошенный урл, потом его же со слешем, потом выдай 404. NGINX делает точно то, что вы сказали.
    Если у вас собранное реакт-приложение, то скорее всего у него точка входа index.html
    Замените указанное правило на
    location /{                                                                                                             
        try_files $uri $uri/ /index.html;

    тогда по запрошенному (но не существующему реально на файловой системе) урлу /poll вам вернутся содержимое Index.html, и запустится реакт, и реакт-роутер обработает указанный урл.

    https://nginx.org/en/docs/http/ngx_http_core_modul...
    Ответ написан
    1 комментарий
  • Как запретить вход на сайт по ip через nginx?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Слушать порт не для 0.0.0.0, а только для localhost
    Ответ написан
    Комментировать
  • Возможно ли закрыть папку паролем, но разрешить доступ без пароля с определенных ip?

    @dodo512
    Директива Satisfy по умолчанию All. Если переключить на Any, то будет поведение как нужно.
    Например, IP 192.168.1.2 и файл паролей /var/www/.htpasswd
    AuthType Basic
    AuthName "Restricted Resource"
    AuthUserFile /var/www/.htpasswd
    Require valid-user
    
    Order Allow,Deny
    Allow from 192.168.1.2
    
    Satisfy Any


    В Apache 2.4 есть <RequireAll> и <RequireAny>
    https://httpd.apache.org/docs/2.4/howto/auth.html#...
    By default all Require directives are handled as though contained within a <RequireAny> container directive. In other words, if any of the specified authorization methods succeed, then authorization is granted.

    По умолчанию для всех Require используется <RequireAny>.
    AuthType Basic
    AuthName "Restricted Resource"
    AuthUserFile /var/www/.htpasswd
    
    Require valid-user
    Require ip 192.168.1.2
    Ответ написан
    Комментировать
  • Ошибка при скачивании pdf-файлов, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Легко проверить. Ты делаешь:
    url = "https://file.11klasov.net/index.php?do=download&id=16985" # замените на URL файла, который вы хотите скачать
    response = requests.get(url)

    Затем посмотри атрибут response.history, и ты увидишь там два ответа: [<Response [302]>, <Response [301]>]. Все коды 3XX - это перенаправления, т.е. сайт тебя перенаправляет на другую страницу, вместо того, чтобы отдать контент.
    Итог этих перенаправлений можно узнать из response.url, который будет равен
    'https://file.11klasov.net/13938-russkij-jazyk-7-klass-razumovskaja-mm-lvova-si-kapinos-vi-i-dr.html'

    Т.е. сайт задетектил бота, и отправил тебя на страницу учебника. Так обычно борятся с хотлинкингом, когда кто-то ставит прямую ссылку на файл на твоём сайте.
    Также можно проверить response.headers['content-type']. Он будет 'text/html; charset=utf-8', т.е. это HTML страница а не PDF файл. Разумеется, если ты HTML страницу запишешь в файл с расширением .pdf, она от этого не станет валидным PDF.

    Обычно проверяются две вещи: User-Agent и Referer. Первый описывает браузер пользователя, второй - с какой страницы был переход по этой ссылке. Но для данного сайта, похоже, достаточно добавить только Referer вот так:
    response2 = requests.get(url, headers={
        'referer': response.url,  # ну или 'https://file.11klasov.net/13938-russkij-jazyk-7-klass-razumovskaja-mm-lvova-si-kapinos-vi-i-dr.html'
    })

    То получишь желаемое - response2.history будет пустой, а response2.headers['content-type'] будет равен 'application/pdf'.

    С учётом этого можешь поправить свой код, чтобы он детектил редирект и делал второй запрос с заголовком Referer.
    Ответ написан
    Комментировать
  • Как пустить трафик контейнера1 через контейнер2 в proxmox?

    @Drno
    включить на нём NAT, и указать его шлюзом для другого контейнера
    Ответ написан
    Комментировать
  • В чем отличие ngnix от golang?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ну раз с фронта пересели, то аналогию понять должны: В чëм отличие Google Chrome от JavaScript?
    Ответ написан
    3 комментария
  • Как настроить nginx под статический сервер с автоматическим подбором страниц по существованию таких файлов?

    Maksclub
    @Maksclub
    maksfedorov.ru
    index index.html;
    root /app;
    
    location / {
            try_files $uri $uri/ /index.html =404;
    }


    Если файл есть в /app — отдаст, если нет — index.html
    Ответ написан
    2 комментария
  • Как указывать имя пингуемого устройства чтобы к нему не дописывался домен отправителя?

    @d-stream
    Готовые решения - не подаю, но...
    Для nslookup и подобных - точку в конце имени
    nslookup pc1.
    Ответ написан
    Комментировать
  • Как с помощью смартфона проверить ширину лазерного реза?

    GavriKos
    @GavriKos
    С такой точностью не каждая линейка справится. Смартфон с его погрешностями и переменной средой с тонной преобразований и подавно.

    Самый правдоподобный вариант - взять смартфон, на пресе его сплющить до 0.5 мм с нужной точностью, и пихать в рез как щуп.
    Ответ написан
    2 комментария
  • Как настроить права на файл при выполнений php скрипта в ubuntu?

    saboteur_kiev
    @saboteur_kiev Куратор тега Ubuntu
    software engineer
    права, которые у тебя на cookie.txt не могут быть заданы при создании обычного файла, ибо umask не может для файла проставить executable и sticky bit

    То есть их уже кто-то потом поменял на такие.
    Либо для cookie создавался временный файл командой mktemp или ее аналогом.

    Выход -
    1. Добавить в php скрипт смену прав для файла после его создания - chmod("cookie.txt",0644);
    2. Просмотреть скрипт, понять в каком месте создается файл и выяснить почему кривые права. Может вместо создания временного файла там можно просто указать создание явного файла с указанным именем.
    Ответ написан
    5 комментариев
  • Зачем образу докера операционная система?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Потому что иногда удобнее иметь в контейнере минимальную ОС с окружением, а не конкретное приложение.
    Вы бы начали с изучения, что ответы на банальные вопросы можно гуглить - советую, пригодится.
    Ответ написан
    Комментировать
  • Можно ли как-то отредактировать файл /etc/resolv.conf на shared хостинге?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    На shared хостинге нет, на полноценном VPS да.

    У curl есть флаг --resolve
    curl --resolve go1.unisender.ru:443:217.77.111.4 https://go1.unisender.ru

    Для PHP, например CURLOPT_RESOLVE
    Ответ написан
    Комментировать
  • Почему при клике на кнопку value не правильно считает значения?

    smilingcheater
    @smilingcheater
    Вы внутри метода calculater вешаете обработчики на кнопки. Сколько раз был вызван calculater - сколько обработчиков у вас и висит. Поставьте внутри этого обработчика console.log() и посмотрите, сколько раз он выведется.
    Назначайте обработчики только 1 раз
    Ответ написан
    Комментировать