LINUX.ORG.RU

Сообщения Xintrea

 

Через браузер и консоль отдается разный сертификат. Это что за?

Имеется хост https://webhamster.ru. На нем используются сертификаты Lets Encrypt. Если в браузере посмотреть информацию о сертификате, то будут видны следующие даты:

Действителен с ‎30 ‎декабря ‎2021 ‎г. 8:15:11
Действителен по ‎30 ‎марта ‎2022 ‎г. 8:15:10

То есть, сертификат действителен, не просрочен.

Если же залогиниться в консоль этого хоста, и попробовать получить главную страницу через wget, то будет ошибка:
> wget https://webhamster.ru
--2022-01-11 14:16:46--  https://webhamster.ru/
Распознаётся webhamster.ru (webhamster.ru)… 193.124.188.214
Подключение к webhamster.ru (webhamster.ru)|193.124.188.214|:443... соединение установлено.
ОШИБКА: Нет доверия сертификату для «webhamster.ru».
ОШИБКА: Срок действия сертификата «webhamster.ru» истёк.

Хм, что за дичь, надо посмотреть через openssl:
> openssl s_client -showcerts -connect webhamster.ru:443
CONNECTED(00000003)
depth=3 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT
verify return:0

А тут показывается, что сертификат заканчивает действие 30 сентября 2021, то есть сертификат уже недействительный.

Я аж полез в конфиг nginx, посмотрел какой файл прописан в опции ssl_certificate, посмотрел информацию по нему:
> openssl x509 -in *****.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:0d:58:dc:36:10:f7:40:f8:73:0c:19:ae:fc:d5:38:f0:00
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Let's Encrypt, CN=R3
        Validity
            Not Before: Dec 30 05:15:11 2021 GMT
            Not After : Mar 30 05:15:10 2022 GMT

А тут все нормально, даты правильные. В Nginx прописан один server для протокола HTTPS, у него одна опция ssl_certificate, никакой путанницы быть не может. Именно этот сертификат и отдается в браузер.

Но почему при запросе через wget и openssl отдается какой-то странный сертификат, с закончившейся датой действия?

 , , , ,

Xintrea
()

Проверить объект на принадлежность NoneType в Python3

Никак не могу понять. У меня есть переменная неопределенного типа (ее возвращает Popen.communicate() в кортеже). Поэтому использовать эту переменную без проверки я не могу, ибо будет ошибка:

stdErrData.decode()
AttributeError: 'NoneType' object has no attribute 'decode'

Вроде как в Python3 есть функция проверки на принадлежность типу. Использую ее:
    errData=""
    if not isinstance(stdErrData, NoneType) :
      errData=stdErrData.decode()

Но и эта конструкция выдает ошибку:
line 25, in run 
   if not isinstance(stdOutData, NoneType) : 
NameError: name 'NoneType' is not defined

Как же блин проверить тип переменной в Python3?

 , pytnon, ,

Xintrea
()

Почему функция str() возвращает байтовый массив в Python3 ?

Возникла необходимость написать пару скриптов на Python3 (если быть точным, 3.5.3 ибо дистр старенький, но его менять нельзя). До этого Питон щупал когда он был еще 2-й версии.

Есть следующий код:

    p=Popen(cmd, stdout=PIPE, shell=True)

    stdOutData, stdErrData = p.communicate()
    errCode=p.returncode

    print( "Std out data: "+str(stdOutData) )

В результате его работы в консоль выводится:
Std out data: b'/home/x/work/develop/python/lissage/step0000-showUserInfo.py\n'

Вроде как функция str() должна возвращать строку, а она возвращает, судя по выводу, байтовый массив.

Операционная система имеет кодировку UTF-8, файлы тоже в кодировке UTF-8.

Как получить строку в Python3 в этом коде?

 ,

Xintrea
()

Не могу использовать функцию IF() в Libre Office

Засовываю в ячейку следующую формулу:

=IF(0=1; 100; 250)

Но вместо 250 в ячейке пишется ошибка: «#ИМЯ?»

Вопрос: как правильно писать функцию IF чтобы она работала?

 ,

Xintrea
()

Проблема с группой в регулярке

Есть текст:

static void OutClass::OurMethod(int a)
static void OurFunction(int b)

Надо получить:
OutClass::OurMethod(int a)
OurFunction(int b)

То есть, надо оставить имя C++ метода или функции и все что правее, а возвращаемый тип пропустить.

Я использую регулярку https://regex101.com/r/oax6bm/1:
\w+(::)?.*\(.*\)

И она не работает. Она матчит весь текст.

Проблема в кванторе вопроса ? для группы (::). Если его убрать, то для строки с OutMethod матчинг сработает правильно. Но двойное двоеточие может либо быть, либо не быть, поэтому я использую квантор ?. И с ним все ломается.

Как исправить?

 

Xintrea
()

Кино и космос

Смотрю сейчас трансляцию полета Союза на МКС с киноделами на борту с сайта NASA. При стыковке отказали оба аппарата управления сближением КУРС 1 и 2, стыковка произведена в ручном режиме.

При подготовке к открытию люка тренированная актриса прямым текстом говорит: «Я сейчас у вас тут сейчас уписаюсь, не могу больше терпеть». Тетка из NASA переводит что актриса роскосмоса собирается juice, и надо что-то делать.

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

В общем сейчас на орбите по-настоящему жарко.

https://www.youtube.com/watch?v=21X5lGlDOfg

 ,

Xintrea
()

Команда экспорта *.svg в *.png в Inkscape: как отключить окно «png bitmap image import»?

Использую Inkscape 1.1.

Нужно мне сделать команду экспорта *.svg в *.png с помощью консольных опций Inkscape.

Картинка svg содержит растровые картинки, они интергрированы в svg-файл.

Я написал такую команду:

inkscape --export-width=1920 --export-type=png "page-01.png" "page-01.svg"

Проблема в том, что при запуске этой команды почему-то открывается окно «png bitmap image import», в котором спрашиваются Image Import Type, Image DPI, Image rendering mode. Такое окно обычно появляется, когда растровая картинка вставляется в svg-файл и интерфейсе Inkscape. В этом окне можно нажать Отмена, и консольная команда продолжит свою работу, png-файл будет сгенерирован правильно.

Вопрос: как подавить появление этого диалога, чтобы была только консоль? Пробовал в команду добавить:
--shell
--actions="quit"
--verb="quit"

и всякие подобные комбинации, но окно импорта все равно появляется.

Вопрос: как сделать чтобы это окно не появлялось и работал экспорт в консоли?

 , , , ,

Xintrea
()

Видеокарта Intel HD Graphics 4000 с Linux-драйверами i915 криво считает функцию арктангенса

Linux в очередной раз меня подвел.

На моем ноуте HP450 стоит карточка Intel HD Graphics 4000. Информация о чипсете и драйверах:

Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
        Kernel driver in use: i915
        Kernel modules: i915
filename:       /lib/modules/4.9.0-4-amd64/kernel/drivers/gpu/drm/i915/i915.ko
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
vermagic:       4.9.0-4-amd64

Так вот, наткнулся я на проблему в шейдерах GLSL локально в Bonzomatic, а потом увидел ее же в браузере в ShaderToy. Проблема в том, что функция atan() выдает дикую дичь.

Ссылка на пример: https://www.shadertoy.com/view/NljSzV

В телеграмканале «Newskool demomakers' chat» мне подтвердили, что на карточках других производителей такой проблемы не наблюдается.

Вначале думал, что проблема аппаратная. Но заморочился и на этом же оборудовании запустил Windows. И что я вижу? Все прекрасно работает, atan() считается как положено.

Пока что сделал workaround через арксинус, хорошо что хоть он вычисляется правильно:
float arctangens(float a)
{
    return asin(a/sqrt(1.0+a*a));
}

Но вообще прошу владельцев Intel-серии заглянуть по вышеуказанной ссылке и сказать, как двигается верхняя линия, с указанием модели своей карты и версии драйвера. Если atan() считается правильно, то линия должна плавно двигаться справа-налево. Если неправильно, то будет двигаться в разные стороны, иногда пропадать с экрана.

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

 atan, , , ,

Xintrea
()

Как дать доступ пользователю монтировать сетевой каталог, прописанный в /etc/fstab ?

У меня в /etc/fstab прописана такая строчка:

//server.lo/pub /media/OurServer/pub cifs rw,file_mode=0777,dir_mode=0777,username=xintrea,user=xintrea,cruid=xintrea,vers=1.0,sec=krb5 0 0

Если я от пользователя root даю команду:
mount /media/OurServer/pub
то происходит монтирование сетевого каталога. Размонтирую.

Далее пробую от пользователя xintrea дать ту же самую команду. В ответ получается ошибка:
mount: only root can mount //server.lo/pub on /media/OurServer/pub

На просторах Интернета я нахожу утверждение, что если в опциях в файле /etc/fstab написано user=xintrea, то данному пользователю должно даваться разрешение на монтирование сего ресурса. Но на деле этого не происходит.

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

 , , , ,

Xintrea
()

Останавливается видео в Blender 2.93 после 1 секунды проигрывания

Стоит значит у меня Blender 2.93 на Debian Linux.


Открываю я Video Editing Workspace. Перетягиваю на Timeline видеоролик. Пытаюсь его проиграть. Для этого нажимаю клавишу Пробел или кнопку внизу с названием Play Animation (треугольная такая). Видео проигрывается ровно 1 секунду и останавливается.

Причем, кнопка Play Animationиз треугольничка превращается в кнопку паузы. Типа все в порядке, видео проигрыватеся, ты можешь нажать паузу. Но видео стоит на месте, номер текущего кадра тоже стоит на месте.

Что самое интересное, если нажать соседнюю кнопку проигрывания назад (треугольничек в другую сторону), то видео прекрасно проигрывается в обратной последовательности. А просто проиграть видео невозможно.


Что это за дичь? Может быть, где-нибудь есть какая-то настройка, которая ограничивает проигрывание вперед одной секундой? Я ничего не нашел.

 , ,

Xintrea
()

Qt. Как проще сделать виджет, сильно похожий на заданный?

Имеется следующий виджет-меню:

http://i.piccy.info/i9/c7c16510d27ba4873ffec2e649009df0/1626854321/67618/1436...

Нужно сделать такой же на Qt5 (обычные виджеты, не QML), всеми пикселями похожий на заданный.

Стиль Windows для QToolButton или для QFrame, в принципе, подходит. Я бы мог понапихать слева-направо или кнопки или фреймы, чтобы составить такое меню. Но если присмотреться, то между секциями вертикальные разделители не «на полную глубину» а как бы «в половину глубины».

Вот я и думаю, каким макаром проще всего сделать меню с такими разделителями секций?

 , , отрисовка

Xintrea
()

Куда должен пойти ученик, чтобы купить книгу про Гарри Поттера?

Ребенку задали задание по английскому, чтобы он лучше ориентировался в Linux, естественно.

Сидим все и думаем, каков правильный ответ, и в каких загадочных местах продаются книжки про Гарри. Рассмотрели даже вариант «в стене», но такого варианта нет.

Что думает коллективный разум?

Задание: http://i.piccy.info/i9/5cbb7534eeea4c8f11ca5b5b2edee6e4/1618855970/139100/142...

 , mystery,

Xintrea
()

Как правильно запустить очередь в Laravel с именованными очередями?

Восстанавливаю сейчас к работе проект двухлетней давности.

В нем используется Laravel 5.5.45.

Сам забыл уже и PHP, и Laravel, и что там где там надо крутить.

Проблема вот в чем. Очереди в проекте настроены на драйвер database, используется MySQL (MariaDB). Таблицы jobs и failed_jobs созданы. Задания очереди успешно создаются, и появляются в таблице jobs. Для заданий предусмотрено 3 очереди:

- email
- phone
- telegram

В таблице jobs в поле queue видно соответствующее имя очереди.

Если согласно документации запустить очередь командой:

php artisan queue:work

то задания выполняться не будут, и поле attempt (количество попыток запуска) для всех заданий будет содержать значение 0.

В какой-то момент я нащупал, что если запустить команду:
php artisan queue:work --queue=telegram,default

то задания из очереди telegram таки выполнятся.

Но в документации я не нашел описания того, что для работы обработчика очереди требуется обязательно указывать имя очереди. Вроде как команда php artisan queue:work должна обрабатывать все очереди, но этого не происходит.

Вопрос: а какой командой таки можно запустить обработку всех именованных очередей? Я ее пропишу в Supervisor.

 , ,

Xintrea
()

А у меня одного в Firefox 86.0.1 не работают ссылки на сообщения из уведомлений ЛОР-а?

Поставил Firefox 86.0.1, и обнаружил что при нажатии ссылок на сообщения в уведомлениях происходит переход на страницу, но прокрутка на этой странице не проматывается до нужного сообщения, а останавливается на совершенно случайных местах. Так и должно быть?

 

Xintrea
()

Почему не работает monospace в font-family?

Привет, народ.

Есть, к примеру, такая страничка:

Как разобраться, почему некоторые каталоги в DropBox не синхронизируются под Linux

На ней есть следующий HTML-код:

<p style=" margin-top:0px; 
           margin-bottom:0px; 
           margin-left:20px; 
           margin-right:0px; 
           -qt-block-indent:0; 
           text-indent:0px;">
  <span style=" font-family:'monospace'; color:#6a1009;">
    chmod 755 ./dropbox.py
  </span>
</p>

Проблема в том, что несмотря на указание monospace в качестве семейства шрифтов, надпись выполняется немоноширинным шрифтом с засечками.

Вопрос: почему не применяется monospace для вывода текста?

Проблема есть в Crome 89.0.4389.72 (Официальная сборка), (64 бит).

 ,

Xintrea
()

Как запустить скрипт через at от non-root пользователя?

У меня есть два простых скрипта:

/opt/script/loloswitcher.sh

#!/bin/bash

echo "/opt/script/loloswitcherPostRun.sh" | at now

/opt/script/loloswitcherPostRun.sh
#!/bin/bash

logFile="/tmp/loloswitcherLog.txt"

/bin/date > $logFile
/bin/echo "Label 1" >> $logFile


/bin/sleep 3


/bin/date >> $logFile
/bin/echo "Label 2" >> $logFile

Права на эти скрипты следующие:
$ ls -la | grep lolo 
-rwxrwxrwx  1 root root  391 мар  2 10:47 loloswitcherPostRun.sh 
-rwxrwxrwx  1 root root  204 мар  2 10:24 loloswitcher.sh

Проблема в том, что если запустить loloswitcher.sh от root, то произойдет запуск loloswitcherPostRun.sh, будет создан файл /tmp/loloswitcherLog.txt, в него будут записаны обе метки Label 1 и Label 2.

Но если удалить /tmp/loloswitcherLog.txt и запустить loloswitcher.sh от обычного пользователя, то скрипт loloswitcherPostRun.sh не будет выполнен, и файл /tmp/loloswitcherLog.txt вообще не будет создан. В системных логах полное молчание, никаких ошибок или предупреждений.

Почему-то команда at способна выполнять скрипты только при запуске от рута. Что где еще нужно докрутить, чтобы можно было запускать команды через at от обычного пользователя?

 , , ,

Xintrea
()

Как выкачать определенный pack-файл с Git-репозитария?

Сижу сейчас на мобильном интернете.

У меня в локальной копии репозитария оказался поломанный pack-файл. Я бы мог перевыкачать весь репозитарий, но размер репозитария несколько гигабайт.

Я знаю точно название pack-файла, и мне надо выкачать только его:

.git/objects/pack/pack-dd181d6ed4ebbcf10347fb0908a2f644ef40b993.pack

Вопрос: как это сделать? Репозитарий на Гитхабе.

 , gitfs,

Xintrea
()

Как вставить значение переменной в одинарные кавычки?

В bash есть особенность: внутри одинарных кавычек значение переменной не разворачивается:

networkByte="205"

result1=`echo $networkByte`
result2=`echo '$networkByte'`

echo $result1
echo $result2

Выхлоп:
205
$networkByte

В связи с этим вопрос: а как тогда подставлять значения переменных в grep/sed? Вот есть такая команда:
projectType=`cat ./config.xml | \
 grep '^\s*<\s*App\s*name.*project.*network\s*=\s*\"$networkByte\".*>\s*' | \
 sed -E 's/(^.*project\s*=\s*\")(.*)(\"\s*network\s*=\s*\"$networkByte\".*>\s*)/\2/'`

Здесь используется переменная $networkByte, но ее значение не вставляется в команду, как хотелось бы, а вместо этого всовывается строка «$networkByte».

А как сделать, чтобы в команду вставлялось значение переменной?

 , , ,

Xintrea
()

Почему работает доступ к значению без $ в условном выражении?

Сейчас наткнулся вот на такую особенность:

#!/bin/bash

regExpLen="1"

if [[ regExpLen -eq 1 ]]; then
  echo "Равно 1"
fi

Вопрос: почему в условии можно не писать $regExpLen, почему работает просто имя переменной?

 , ,

Xintrea
()

Как выполнить команду в Bash из переменной?

Проблема при выполнении следующего куска кода. Скрипт запускается от обычного текущего пользователя:

#!/bin/bash

    hostIp="192.168.150.101"
    userPwd="12345"

    echo "Настройка хоста $hostIp"

    command="sshpass -p '$userPwd' ssh-copy-id -i ~/.ssh/id_rsa.pub user@$hostIp"
    echo "Выполняется команда:"
    echo "$command"
    $command

При запуске этого когда, в консоли видим следующую ошибку:
Настройка хоста 192.168.150.101
Выполняется команда:
sshpass -p '12345' ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.150.101

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '~/.ssh/id_rsa.pub': Нет такого файла или каталога

Но дело в том, что, файл открытого ключа существует. Мало того, если в консоли скопировать «сконструированную» скриптом команду, и выполнить ее:
sshpass -p '12345' ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.150.101

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

Вопрос: почему не выполняется команда внутри скрипта? При этом почему она нормально выполняется в консоли?

 , , ,

Xintrea
()

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