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 подписка на новые темы