LINUX.ORG.RU

Сообщения ubik

 

systemd service conditional execution

Шалом, мужчины.

Подскажите, возможно средствами systemd выполнять определённую команду, если таймер срабатывает в определённый день, например, в субботу. В другие дни, команда должна выполняться другая.

Если да, то как? Спасибо :]

 

ubik
()

Thinkpad x230 проблемы с матрицей

Всем привет.

Дизассемблил старичка x230, чтобы смазать термопастой. После сборки и включения на экране ничего не видно. Думал, что забыл подключить шлейф для матрицы. Разобрал снова, но всё подключено о_О\

В dmesg’e никаких error’ов. При включении ноутбука еле видно надпись «Thinkpad» и больше ничего не видно, такое впечатление, что проблемы с подсветкой. Подскажите, проблема решаема, или есть смысл брать новую матрицу?

 , , ,

ubik
()

Когда подешевеют видики?

Всем шалом.

Как думаете, когда подешевеют видеокарты? Подешевеют ли они вообще?

Смотрю на статистику цен, они вообще какие-то конские стали:

 

ubik
()

Enable youtube restrictions

Всем здрасте.

Подскажите, а есть в ютубе возможность запретить выдавать видео по определённым кейвордам (которые настраиваются пользователем)? Может сторонними сервисами какими-то/плагинами к браузеру?

 ,

ubik
()

undefined symbol: mail_deliver_ctx_get_log_var_expand_table

Всем шалом.

В ubuntu 20.04 при попытке залогиниться почтовым клиентом получаю такое сообщение:

dovecot[35376]: imap(user@mail.domain): Error: Couldn't load required plugin /usr/lib/dovecot/modules/lib90_sieve_plugin.so: dlopen() failed: /usr/lib/dovecot/modules/lib90_sieve_plugin.so: undefined symbol: mail_deliver_ctx_get_log_var_expand_table

Через doveadm auth test всё спокойно:

doveadm auth test user@mail.domain p@$$w0rd
passdb: user@mail.domain auth succeeded
extra fields:
  user=user@mail.domain

выхлоп doveconf -n:

doveconf -n
# 2.3.7.2 (3c910f64b): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.7.2 ()
# OS: Linux 5.4.0-73-generic x86_64 Ubuntu 20.04.2 LTS 
# Hostname: mailstation
mail_location = mbox:~/mail
mail_privileged_group = mail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mdbox_preallocate_space = yes
namespace inbox {
  inbox = yes
  location = 
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/learn-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/learn-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_name = *
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_default = /var/lib/dovecot/sieve/default.sieve
  sieve_global_extensions = +vnd.dovecot.pipe
  sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = " imap lmtp sieve"
service auth-worker {
  user = $default_internal_user
}
service auth {
  unix_listener /var/spool/postfix/private/dovecot-auth {
    mode = 0600
    user = postfix
  }
}
service imap-login {
  inet_listener imap {
    port = 0
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
  }
}
ssl_cert = </etc/letsencrypt/live/mail.domain/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}
protocol lmtp {
  mail_plugins = " sieve"
}
protocol imap {
  mail_plugins = " sieve"
}

В гугол ходил, но безрезультатно ☹ В какую сторону копать? Собирать dovecot-sieve руками?

 , ,

ubik
()

systemd.timer: OnCalendar except

Всем шалом.

Подскажите, есть ли в системд-шном таймере возмножность указать в OnCalendar следующее: \

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

Если да, то как? В документации не могу найти ☹
Спасибо ☺

 ,

ubik
()

Почему письма попадают в спам?

Таки шалом всем.

Настроил себе письменный postfix сервачок. Вроде всё кошерно, судя по репорту mailgenius (скор 95/100), есть только некоторые warnings:

  • в DMARC записи p=none
  • доменный суффикс не такой как у всех
  • слишком молодой домен
  • отсутсвует List-Unsubscribe заголовок

Шлю, значит, с этого кошерного сервачка письмецо на гугловый ящик, судя по заголовокам в самом gmail spf, dmarc и dkim прошли проверку, но письмо всё равно попадает в Spam.

Почему так происходит? Что можно/нужно подкрутить?

 , ,

ubik
()

Заменить второй матч первым.

Всем привет. Есть патч, сформированный diff’ом, например, с таким содержимым:

diff -ruN foo/bar /home/ubik/foo/bar
--- foo/bar   2021-03-02 13:23:57.031363407 +0200
+++ /home/ubik/foo/bar     2021-03-02 14:37:01.213455947 +0200

Нужно заменить подстроку «/home/ubik/foo/bar» паттерном из первого матча, т.е. «foo/bar». Заменяемая подстрока может находиться в той же строке, либо на следующей, т.е. что-то типа такого:

diff -ruN foo/bar foo/bar
--- foo/bar   2021-03-02 13:23:57.031363407 +0200
+++ foo/bar   2021-03-02 14:37:01.213455947 +0200

Буду благодарен за помощь.

P.S. На сколько я понял, sed’ом это будет сделать сложнее, чем awk, но было бы интересно увидеть решение с sed’ом также

P.P.S. Есть возможность сформировать патч таким образом, чтобы пути в нём был одинаковыми, при этом используя разные пути для diff’a? label просто заменяет названия

 , ,

ubik
()

помогите подобрать комплектующие

Всем привет.

Настигла необходимость поменять старенький десктоп, на что-нибудь современное. Третий день читаю про характеристики и обзоры железяк, голова уже идёт кругом. Посему помогите подобрать железо, чтобы забыть про следюущий апргрейд лет на 8.

Пока накидал вот такую конфигурацию

Основные задачи:

  • компиляция различного рабочего говна;
  • контейнеры/виртуалочки (3-5 шт.);
  • порисовать в gimp/photoshop/blender.

 , ,

ubik
()

мониторилку хостов

Всем привет.

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

Спасибо. Всем хорошего дня ☺

 ,

ubik
()

магия exec'ов и flock'ов

Всем здрасте.

Расскажите, пожалуйста, что происходит в скрипте этого индийского господина.

Особенно интересуют строки с exec'ами и flock'ами в L5, L9, L12, L14, L17 и L20

 

ubik
()

Проброс траффика между интерфейсами wg

Всем привет.

Есть сервер на Debian 10, на нём настроны два wg интерфейса (один сервер, другой клиент):

WG server

root@0x4:/etc/wireguard# cat wg0s.conf 
[Interface]
Address = 10.0.0.1/24
SaveConfig = false
PostUp = iptables -A FORWARD -i wg0s -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0s -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0s -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0s -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = <private_key>

[Peer]
PublicKey = <public_key>
AllowedIPs = 10.0.0.2/32
Endpoint = <ep_ip>:32451

[Peer]
PublicKey = <public_key>
AllowedIPs = 10.0.0.3/32
Endpoint = <ep_ip>:61734

WG client

root@0x4:~# cat /etc/wireguard/rwg0.conf 
[Interface]
PrivateKey = <private_key>
Address = 192.168.204.203/24

[Peer]
PublicKey = <public_key>
AllowedIPs = 192.168.204.0/24
Endpoint = <ep_ip>:53684
PersistentKeepalive = 25

Есть другой клиент, который коннектится к этому серверу, имеет IP 10.0.0.3/24. Нужно настроить форвард траффика с этого клиента в подсеть 192.168.204.0/24 через Debian сервер. Пытался мучить iptables, но не выходит? траффик не идёт. Что здесь не так? Чего нужно подкрутить?

 , ,

ubik
()

Зашарить данные между тестовыми методами класса

Привет, парни.

Есть некий класс с двумя тестами внутри. Первый тест модифицирует переменную, которую нужно расшарить с другими тестами. К сожалению __init__ нельзя пихать в классы, т.к. pytest ругается. Как это сделать правильно и с наименьшей болью?

cat foo.py 
import pytest

class TestFoo:
    data = None

    def test_one(self):
        print('data=', self.data)
        self.data = 10
        print('data=', self.data)

    def test_two(self):
        print('data=', self.data)

выхлоп:

pytest foo.py -v -s
============================================================================================================= test session starts =============================================================================================================
platform linux -- Python 3.7.3, pytest-5.0.1, py-1.5.3, pluggy-0.12.0 -- /usr/bin/python3.7
cachedir: .pytest_cache
metadata: {'Python': '3.7.3', 'Platform': 'Linux-5.1.5-x86_64-with-glibc2.2.5', 'Packages': {'pytest': '5.0.1', 'py': '1.5.3', 'pluggy': '0.12.0'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'hypothesis': '3.66.6', 'expect': '1.1.0'}}
rootdir: /tmp
plugins: metadata-1.8.0, html-1.20.0, hypothesis-3.66.6, expect-1.1.0
collected 2 items                                                                                                                                                                                                                             

foo.py::TestFoo::test_one data= None
data= 10
PASSED
foo.py::TestFoo::test_two data= None
PASSED

========================================================================================================== 2 passed in 0.01 seconds ===========================================================================================================

 , , ,

ubik
()

дёрнуть команду в контейнере, не запуская сам контейнер aka chroot :)

Привет, всем.

Значит забутстрапил я какую-то убунту и хочу дёрнуть какую-нибудь команду, пусть будет ls. Поехали:

localhost /var/lib/machines # systemd-nspawn -D bionic/ /bin/bash -c "ls -l"
Spawning container bionic on /home/int/machines/bionic.
Press ^] three times within 1s to kill container.
Failed to mount /etc/resolv.conf (type n/a) on /home/int/machines/bionic/run/systemd/resolve/stub-resolv.conf (MS_BIND ""): No such file or directory
total 56
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:22 bin
drwxr-xr-x   2 1449984000 1449984000 4096 Apr 24  2018 boot
drwxr-xr-x   7 root       root        400 May 17 20:49 dev
drwxr-xr-x  59 1449984000 1449984000 4096 May 17 20:34 etc
drwxr-xr-x   2 1449984000 1449984000 4096 Apr 24  2018 home
drwxr-xr-x  11 1449984000 1449984000 4096 May 17 20:21 lib
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:19 lib64
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 media
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 mnt
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 opt
dr-xr-xr-x 259 root       root          0 May 17 20:49 proc
drwx------   2 1449984000 1449984000 4096 May 17 20:37 root
drwxr-xr-x   3 root       root         60 May 17 20:49 run
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:23 sbin
drwxr-xr-x   2 1449984000 1449984000 4096 May 17 20:18 srv
dr-xr-xr-x   9 root       root        180 May 17 20:49 sys
drwxrwxrwt   2 root       root         40 May 17 20:49 tmp
drwxr-xr-x  10 1449984000 1449984000 4096 May 17 20:18 usr
drwxr-xr-x  11 1449984000 1449984000 4096 May 17 20:18 var
Container bionic exited successfully.
localhost /var/lib/machines #

По поводу ResolvConf=bind-host я в курсе, не нужно тыкать носом. Вопрос сейчас не в этом.

«Ну, команда выполнилась и зачем ты меня сюда позвал?» - спросишь ты. «А я хочу дёрнуть её через machinectl, при этом в nspawn файле записав Boot=no, ну и указать всякие Bridge и Bind'ы» - отвечу я :)

localhost /var/lib/machines # systemctl start systemd-nspawn@bionic
localhost /var/lib/machines # machinectl shell bionic /bin/bash -c "ls -l"
Failed to get shell PTY: Protocol error
localhost /var/lib/machines #
И потом спрошу: «Такое вообще возможно?» :)

 ,

ubik
()

Full desktop upgrade

Всем привет. Пришло время обновить/выкинуть свой старый ПэКа и обзавестись новыми железками. Накидал вот такое. Не могу определиться с RAM'ой :-( По сути мне 8Gb хватит с головой, но можно, конечно и рассмотреть вариант до 16-32. Если будут комментарий по списку, буду рад их прочесть также :)

 , ,

ubik
()

bash: pulseaudio --check

Всем привет.

Кто-то может мне объяснить, почему не отрабатывает однострочник для проверки запущенного pulseaudio?

Вот, что происходит:

int@localhost ~ $ pulseaudio --check 
int@localhost ~ $ echo $?
1
int@localhost ~ $ [ $(pulseaudio --check) ] && echo "yes" || echo "no"
no
Ок, допустим. Дальше запускаю pulseaudio:
int@localhost ~ $ pulseaudio -D
int@localhost ~ $ pulseaudio --check 
int@localhost ~ $ echo $?
0
int@localhost ~ $ [ $(pulseaudio --check) ] && echo "yes" || echo "no"
no

В мане говорится следующее:

--check
              Return 0 as return code when the PulseAudio daemon is already running for the calling user, or non-zero otherwise. Produces no output on the console except for errors to stderr.

С grep'ом работает:

int@localhost ~ $ echo 'hello' >> /tmp/foo
int@localhost ~ $ [ $(grep 'hello' /tmp/foo) ] && echo "yes" || echo "no"
yes
int@localhost ~ $ [ $(grep 'olleh' /tmp/foo) ] && echo "yes" || echo "no"
no

 , ,

ubik
()

debootstrap: максимально минимальный debian

Всем привет. Хочется собрать очень маленький дебиан. Прошёлся по этим ресурсам:

Но получившийся рутфс занимает 171Mb, а хочется «ужать» до метров 50-ти. Как это сделать?

 , ,

ubik
()

А есть сервисы по левелапу скиллов в алгоритмах?

Хочется что-то типа такого:

  • объясняется алгоритм на пальцах;
  • даётся задание с применением алгоритма;
  • реализация на С, в худшем случае на С++ :);
  • от сложного к простому.
  • желательно бесплатно

 , ,

ubik
()

C pointers & linked list

Всем привет.

Дали задачку на реверс списка:

int main(void)
{
     struct Node *list;
     alloc_list(&list);
     print_list(list);          /* 0 1 2 3 4 */
     revert_list(list);
     print_list(list);          /* 4 3 2 1 0 */

     return 0;
}
Собственно нужно реализовать revert_list. Немного порисовав стрелочки с кружочками на листике пришёл к такому решению:
void revert_list(struct Node *list_head)
{
     struct Node *p = NULL;     /* previous */
     struct Node *c = NULL;     /* current */
     struct Node *n = NULL;     /* next */

     c = list_head;

     while(c != NULL) {
          n = c->next;
          c->next = p;
          p = c;
          c = n;
     }

     list_head = p;
     print_list(list_head);
}

К моему удивлению, если print_list вызывается из main(), то печатается 0, а внутри reverse_list всё хорошо:

gcc -Wall -Wextra -Wpedantic -g3 rlist.c -o rlist && ./rlist 
0 1 2 3 4 
4 3 2 1 0 
0
Почему так происходит? Ведь я же меняю «направление» next'ов через указатели. Или указатели, созданные на стеке и все манипуляции через них над линкованным списком умирают при выходе из функции?

 , ,

ubik
()

pptpclient: MS-CHAP authentication failed: Login incorrect

Всем привет. Пытаюсь подключиться к VPN серверу, используя pptpclent и получаю следующий выхлоп:

pon rwg debug dump logfd 2 nodetach
pppd options in effect:
debug		# (from command line)
nodetach		# (from command line)
logfd 2		# (from command line)
dump		# (from command line)
noauth		# (from /etc/ppp/options)
refuse-pap		# (from /etc/ppp/options)
refuse-chap		# (from /etc/ppp/options)
refuse-mschap		# (from /etc/ppp/options)
refuse-eap		# (from /etc/ppp/options)
name vpn.porn.xxx\\my_username		# (from /etc/ppp/peers/rwg)
remotename PPTP		# (from /etc/ppp/peers/rwg)
		# (from /etc/ppp/options)
pty pptp vpn.porn.xxx --nolaunchpppd		# (from /etc/ppp/peers/rwg)
ipparam rwg		# (from /etc/ppp/peers/rwg)
nobsdcomp		# (from /etc/ppp/options)
nodeflate		# (from /etc/ppp/options)
require-mppe-128		# (from /etc/ppp/peers/rwg)
using channel 32
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x3ec417fd> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <accomp> <pcomp> <mru 1500> <magic 0x624f17b2> <auth chap MS-v2> <mrru 2048> <ssnhf> <endpoint [MAC:00:25:90:67:80:b6]>]
sent [LCP ConfRej id=0x1 <mrru 2048> <ssnhf>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x3ec417fd> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x2 <accomp> <pcomp> <mru 1500> <magic 0x624f17b2> <auth chap MS-v2>]
sent [LCP ConfAck id=0x2 <accomp> <pcomp> <mru 1500> <magic 0x624f17b2> <auth chap MS-v2>]
rcvd [CHAP Challenge id=0x1 <bb1e68cf72a313ed32fe35d51ba2cf06>, name = ""]
added response cache entry 0
sent [CHAP Response id=0x1 <b1a6fec4b638bb09af24932d8f4875e100000000000000001f908f887e4360d7d1125f843af83bb9b591ed220f6c67d300>, name = "vpn.porn.xxx\\my_username"]
rcvd [CHAP Failure id=0x1 "E=691 R=0 M=Login incorrect"]
MS-CHAP authentication failed: Login incorrect
CHAP authentication failed
sent [LCP TermReq id=0x2 "Failed to authenticate ourselves to peer"]
rcvd [LCP TermReq id=0x3]
sent [LCP TermAck id=0x3]
sent [LCP TermReq id=0x3 "Failed to authenticate ourselves to peer"]
Connection terminated.
Modem hangup
Waiting for 1 child processes...
  script pptp vpn.porn.xxx --nolaunchpppd, pid 7988
Script pptp vpn.porn.xxx --nolaunchpppd finished (pid 7988), status = 0x0
Используюя тот же самый логин с паролем, но под (прости господи)вендой, всё работает как часики.

localhost /etc/ppp # pptp --version
pptp version 1.10.0

Так как венда меня не интересует и была использована только для теста, хочется подключиться к VPN серверу из Linux хоста. Буду рад помощи. Спасибо.

 , ,

ubik
()

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