LINUX.ORG.RU

96
Всего сообщений: 809

systemd: Не стартует автоматически кастомный скрипт после перезапуска системы

Здравствуйте! unit-file:

[Unit]
Description=Script watches the events from xscreensaver and resets keyboard layout to english only on lock, and adds the ru layout back upon unblank.
# After=local-fs.target

[Service]
ExecStart=/usr/bin/xscreensaver_lock_reset_kbd_layout_to_en.pl
# Type=forking

[Install]
WantedBy=multi-user.target

Сам скрипт:

#!/usr/bin/perl

my $blanked = 0;
open (IN, "xscreensaver-command -watch |");
while (<IN>) {
    if (m/^(BLANK|LOCK)/) {
        if (!$blanked) {
           system "DISPLAY=\":0\" setxkbmap -layout us";
           $blanked = 1;
        }
    } elsif (m/^UNBLANK/) {
        system "DISPLAY=\":0\" setxkbmap -layout us,ru";
        $blanked = 0;
    }
}

При этом если просто уже после логина набрать systemctl start xscreensaver_lock_reset_kbd_layout_to_en.service, то всё работает нормально…
При этом в логах journalctl только вот это:

xscreensaver_lock_reset_kbd_layout_to_en.pl[31091]: xscreensaver-command: warning: $DISPLAY is not set: defaulting to ":0.0".

 , , ,

Eid010n ()

Perl, use Net::LDAP Помогите правильно обработать вывод

Привет. Взяв пример из документации https://metacpan.org/pod/Net::LDAP::Examples#PROCESSING-Displaying-SEARCH-Results приспособил для своих нужд для поиска интересующих записей и атрибутов. Для дальнейшей обработки найденного, я бы хотел использовать хэш, где ключ - какой-то выбранный атрибут, а значение - все остальные атрибуты через пробел. Вот так у меня получилось

#код из примера
my @entries = $result->entries;
my $entr;
foreach $entr ( @entries ) {
  my $attr; my $attrVal;
  my $str='';
  foreach $attr ( sort $entr->attributes ) {
    next if ( $attr =~ /;binary$/ );
    my $attrVal = $entr->get_value ( $attr );
#это мой велосипед
    my $tmp=(join($attr,$attrVal))."|";
    $str=$str.$tmp;
    while ($str=~/^(.*)|(.*)|(.*)|/g) {
      printf "%-20s %s\t%s\n", $3,$2,$1;
      $hash{$3} = join ' ',$2,$1;
    }
#велосипед
  }
}

но это некрасиво/неправильно/мне стыдно - значения отсортированных по алфавиту названий атрибутов склеиваю в строку, а потом её разбиваю. Как правильно, в лучших традициях perl обработать вывод найденного?

 ,

Perspective ()

Perl sendmail to Telegram Bot API TLS1.2 и в Битрикс24

Есть у меня скрипт на сайте sendmail.pl отправляющий данные с сайта в базу данных, телеграм и битрикс24. Там еще СМС.ру но с ним все ок, как и с отправкой в БД. Все работало прекрасно то отключения на днях телеграм поддержки старых протоколов шифрования (использовался sha1). Сайт находится на шаред хостинге таймвеб.

Соответсвенно у меня вопросы, т.к. только изучаю язык.

Как правильно указать путь до библиотек. Какую библиотеку удобнее и надежнее использовать для tls 1.2 и как поправить рабочий скрипт? Можно и на TLS 1.3 также, как я понимаю.

Буду признателен за помощь или свое предложение по помощи за вознаграждение.

[cut=Сам скрипт сейчас] [code=perl]

package sendmail; use strict; use Encode; use JSON; use LWP::UserAgent; use MIME::Lite; use Digest::SHA qw(sha512_hex);

Кусок с telegram и битрикс

# отправляем в битрикс
$msg =~ s#<[^>]+?>#\n#g;
if ($conf::CRM_HOST && $conf::CRM_LOGIN && $conf::CRM_PASSWORD && $conf::CRM_TITLE) {
	my $response = $ua->post($conf::CRM_HOST, [
		"LOGIN"		=> $conf::CRM_LOGIN, 
		"PASSWORD"	=> $conf::CRM_PASSWORD, 
		"TITLE"		=> $conf::CRM_TITLE,
		'NAME' 		=> $fio,
		'EMAIL_HOME' => $email,
		'PHONE_HOME' => $tel,
		'COMMENTS' => $title - $text,
		'SOURCE_DESCRIPTION' => $msg,
		'SOURCE_ID' => "WEB",
	] ); 
	return($response->status_line) if !$response->is_success;
}

Телеграмм сам сделал. Битрикс еще под вопросом.

 , ,

codeme ()

Sed нет больше моих сил

Выручайте, заманался я с сабжем Есть кривой IPTV плейлист. Мне в нем нужно заменить кривые названия групп на правильные, с этим проблем не возникло. В плейлисте есть мертвые ссылки, хочу удалить такую ссылку и строку над ней. Пример

#EXTINF:-1 group-title="Фильмы",A1
http://iptv.tv/amedia/playlist.m3u8
#EXTINF:-1 group-title="Фильмы HD",A1 HD
http://iptv.tv/amediahd/playlist.m3u8
Нужно вместо Фильмы HD сделать Фильмы и удалить строку по маске amediahd + предыдущую. Скрипт
#!/bin/bash
sed 's/Фильмы|HD/Фильмы/' original.m3u8 >> new.m3u8
Такая конструкция меняет название и пишет все в новый плейлист. Могу в консоли выполнить вторую часть задачи вот так
sed -n '/amediahd/{s/.*//;x;d;};x;p;${x;p;}' original.m3u8 | sed '/^$/d' > new.m3u8
Не могу все это запихнуть в скрипт. Можно создавая промежуточные плейлисты добиться результата, но не хочу. Подскажите кто знает толк в sed или awk

 , ,

achilles_85 ()

Запускалка BMPN для скриптовой автоматизации?

В чём загвоздка: есть груда скриптов, связанных друг с другом событиями. Некоторые скрипты вызывают другие просто так, некоторые ждут, пока что-нибудь не появится (почтовое сообщение, например), некоторые запускаются через интервал времени X после завершения предыдущего. Есть логические ветвления, всё как в обычной BPMN-диаграмме.

Сейчас всё сделано на «кроне», т.е. выполняется по каким-то не всегда понятным законам по расписанию периодически. Как это всё взаимосвязано, какими событиями, какие могут быть ветвления - понятно только из текста скриптов после очень долгого разбора полётов с чтением текста и общением с разработчиками.

Хотелось бы всё это задвинуть на BMPN executor, разбив весь процесс на связанные событиями куски. Например, скрипт шлёт почту удалённой системе - следующий шаг будет сделан только тогда, когда удалённая система ответит почтовым сообщением (вот как-то так оно всё сделано, к сожалению). В этом случае можно и замониторить через REST API, на каком этапе процесс находится, можно легко настроить процесс, а главное - это самодокументированная вещь, поскольку документацию никто писать не любит.

Посмотрел Camunda, у него тотальная привязка скриптов к Groovy/Java, что мне не очень нравится. Посмотрел Bonita - там можно /bin/sh запускать, вроде подходит. Сервер BPM Executor’а должен быть там же, где всё это запускаемое по крону хозяйство.

Ну мало ли вдруг кто уже сталкивался с подобным… Печально конечно, что все BPM-системы написаны на Java - а значит, живут в своём собственном мире и не знают ни про какие STDIN, STDOUT, параметры командной строки и всё прочее. Между тем, нужен в идеале инструмент «поближе к системе», менее абстрактный что ли.

Заранее Гигантское СПАСИБО!

 , , ,

DRVTiny ()

Возможно ли на regexp perl удалить определенное число байтов из строки?

Есть строка текста в которой в произвольном месте может содержаться «мусорный» текст который нужно вычистить. У «мусора» следующие параметры он оканчивается на \x00\x00 (в hex представлении), а в начале \xE3\x33 но при этом он не всегда находится в самом начале иногда перед ним бывает 1 или 2 символа. При этом длинна «мусорной» строки всегда 70 байт. Встречается «мусор» произвольное число раз.

Возможно ли на Perl составить такое регулярное выражение или два три выражения которое удаляло бы ненужное?

 ,

zhukovia ()

Как удалить все invalid characters из xml файлов?

Есть директория с UTF-8 файлами SC_TASK_0.xml SC_TASK_1.xml …. SC_TASK_50.xml

Необходимо написать скрипт, который будет удалять из файлов в директории все invalid characters. Пока встретился только Invalid character (Unicode: 0xB) .

Пример проблемного кусочка xml: https://pastebin.com/N6HBCDXe

Проблема в символе VT - Vertical tab.

Опытным путём удалось обрезать в одном файле, но как сделать это для всех файлов в определённой папке, сохранив их названия.

 , , ,

xakon ()

Кроссплатформенное мобильное приложение

Если бы я захотел сделать небольшую ide для perl на телефоны ios и android, какие инструменты мне бы лучше всего подошли?

 , , , ,

LancerRevX ()

Perl и Python как scripting languages

С наступившим господа :)!

Я сисадмин, который доучивается до DevOps, чтобы сменить профиль деятельности. В текущий момент устраняю пробелы в своих знаниях, чтобы соответствовать новой профессии и параллельно ищу работу.

Смотря вакансии, очень часто вижу в них требования знания python для scripting. Так сложилось, что я в своей работе использовал perl и bash, и мне их всегда хватало и учить что-то другое вроде как и не требовалось.

Сейчас, как я понимаю, perl устарел и неким стандартом является python для такого рода задач. Ну раз требуется, я быстренько накатил этот python и посмотрев пару youtube видео о каких-то элементарных вещах, перешел к делу. За вечер я переписал несколько своих рабочих perl скриптов на python. (ничего особенно сложного, работа с mysql, обработка текстовых файлов, бекапы и т.п.)

python мне показался вполне дружелюбным, немного другой синтаксис, пожалуй более удобный, более богатый инструментарий, многое делается проще чем на perl. Где-то наоборот как-то мудрено сделано (например при работе с mysql). Но в целом, все оказалось не сложно и я могу точно также использовать python как perl (для моих задач).

Вопрос, я что-то упустил или переход от одного языка к другому, это что-то, что требует пары вечеров?

 , ,

samson_b ()

echo -e, но наоборот

Можете подсказать такую программу:

$ echo -e '\x45\x43'
EC
$ <то, что я ищу> 'EC'
\x45\x43

Желательно чтобы работало на мейнстримных дистрибутивах GNU/Linux из коробки.

Спасибо.

 , , ,

ArkaDOSik ()

Raku (Perl 6)

Существуют ли люди которые используют в своих проектах Raku (Perl 6)? Будет ли когда нибудь настоящая 6 версия Perl?

 , , ,

LancerRevX ()

Регвыр-ребус

Угадаете чего сказать хотел?

$h{Разработка} =~ /\w+(?!.*\w)/s;

 ,

perl5_guy ()

Вышел Perl Audio Converter 6.1.2

Сабж. Это багфиксный релиз.

О том, что это такое:

A tool for converting multiple audio types from one format to another.

It supports the following audio formats: 3G2, 3GP, 8SVX, AAC, AC3, ADTS, AIFF, AL, AMB, AMR, APE, AU, AVR, BONK, CAF, CDR, CVU, DAT, DTS, DVMS, F32, F64, FAP, FLA, FLAC, FSSD, GSRT, HCOM, IMA, IRCAM, LA, MAT, MAUD, MAT4, MAT5, M4A, M4R, MP2, MP3, MP4, MP4A, MPC, MPP, NIST, OFF, OFR, OFS, OPUS, OGA,OGG, PAF, PRC, PVF, RA, RAM, RAW, RF64, SD2, SF, SHN, SMP, SND,SOU, SPX, SRN, TAK, TTA, TXW, VOC, VMS, VQF, W64, WAV, WMA, and WV.

It can also extract audio from the following video extensions: RM, RV, ASF, DivX, MPG, MKV, MPEG, AVI, MOV, OGM, OGV, QT, VCD, SVCD, M4V, NSV, NUV, PSP, SMK, VOB, FLV, WEBM and WMV.

Parallel Processing, a CD ripping function with CDDB support, batch conversion, tag preservation for most supported formats, independent tag reading & writing, service menus for KDE Dolphin/Konqueror, Gnome Nautilus script, and action scripts for Nemo/Thunar are also provided.

Changelog: https://fossies.org/linux/pacpl/ChangeLog
Скачать: https://sourceforge.net/projects/pacpl/files/pacpl/6.1.2/pacpl-6.1.2.tar.bz2

 ,

saahriktu ()

Доступен видеоотчёт с London Perl Workshop 2019

Нет времени чтоб оформить нормальную новость, поэтому пишу сюда.

Ссылка на youtube-канал

 ,

perl5_guy ()

perl-скрипт для удаления скрипто-мусора из html-страниц

добрый день

наборосал скрипт, в первом приближении работает, чистит, вроде как, то, что надо ... :о)

посмотрите, какие могут быть подводные камни или что нужно подзакрутить в «настройках» скрипта?

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

спасибо за пендили :о)

#!/usr/bin/perl

use strict;
use HTML::Laundry;

my $file    ;
my $laundry ;
my $html    ;
my $html_clr;

$file = shift or die "need a file $!\n";

open (FH,"< $file"    );
read (FH, $html, -s FH);
close FH;

$laundry = HTML::Laundry->new();

$laundry->add_acceptable_element(['img','h1','h2','style','stylesheet','href',
'link','html','head','body','meta','title','div','span');

#
# <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
#
$laundry->add_acceptable_attribute(['http-equiv','content','charset']);

$html_clr = $laundry->clean($html);

open (OH, '>', $file);
print OH $html_clr   ;
close OH;

exit;

p.s. в модуле есть возможность использовать base_url, для более тонкой настройки, руки не дошли дотошно потестировать...

 , ,

sunjob ()

Perl6 переименвоали в Raku

Не всем понравилось. Хотя, похоже, Андрей отошел и даже перевыпустил одну из своих книг под новым именем. Важно заметить по поводу книжки:

This is not a bare text replacement s/perl6/raku/. This edition contains a number of changes in the text and program examples that the readers sent after reading the first edition.

Про переименование давно говорили, так что я был к этому готов. Огорчает плохая атмосфера в сообществе. У меня складывается впечатление, что p6 чуваки пытаются откреститься от Perl'а и даже конференции намерены отдельные проводить. Вишенка на торте подобный гнилой движ.

 , ,

perl5_guy ()

Perl 6 официально решили переименовать в Raku

Дискач.

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

Буква «u» в данном слове silent? Как я понимаю что если с японского, то да.

https://news.ycombinator.com/item?id=21227430

 , , ,

vertexua ()

как правильно сделать лог

У меня есть скрипт perl который мониторит значение с датчика выводит значение на stdout все ок. Скрипт также открывает файл на запись, но пишет только в буфер поскольку пока файл не закрыт размер равен 0. Файл закрыть нельзя поскольку процесс неокончен. Подскажите как правильно организовать лог.

 ,

tesla ()

Не запускаются инстансы после обновления mariadb до 10.2.27

Здраствуйте. Работали два инстанса ([mysqld1] и [mysqld2]) на Debian 8 и
mysql Ver 15.1 Distrib 10.0.32-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2.
Стартовал и смотрел состояние через mysqld_multi (start, stop, report).

После переноса базы на другой сервер с Debian 9.9 и mysql Ver 15.1 Distrib 10.2.26-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
все запустилось номально.
Насколько помню, была только ошибка на параметр «innodb_additional_mem_pool_size». Его похоже убрали и я тоже убрал.
И было предупреждение
Wide character in print at /usr/bin/mysqld_multi line 618. Т.е. на строку
print LOGFILE strftime «%a %b %e %H:%M:%S %Y», localtime if ($date_flag);
Но лог писался и чтобы не расстраиваться, строка была закоментарена.

После обновления c 10.2.26 всего лишь до
mysql Ver 15.1 Distrib 10.2.27-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
mysql стартует, т.е. на 3306 я захожу.
А инстансы на 3307 и 3308 не стартуют.
mysqld_multi сначала ругалось, что в строке 352 elseif должно быть elsif (до этого я в этом файле ничего не писал сам). Исправил. Ругаться перестало, но не стартуют ни первый, ни второй. Т.е. ни mysqld_multi start, ни start 1, ни start 2. Не получается. В логах ошибки
[ERROR] /usr/sbin/mysqld: unknown variable 'defaults-group-suffix=mysqld1'

Кстати, этот параметр в троке 352 присутствует
elsif ("--defaults-group-suffix=" eq substr($options[$j], 0, 24))

Пробовал откатить (виртуалка). Все работает пока не обновишь. При этом не важно только upgrade, upgrade и dist-upgrade или обновляешь только «apt-get install mariadb-server» после обновления до 10.2.27 стабильно не запускаются.

Тема не особо мне знакома. Потому google не помог. Поделитесь мыслями, что мне делать.

 , ,

aleksey808 ()

Perl 6 vs Python 3

Дискач.

Чтобы писать утилиты и демоны например для десктопа. Допустим оставим в покое веб-девелопмент, там и так тесно. И забудем былое, Python 2, Perl 5 и связанные стереотипы.

P.S. Прошу не удалять за тупняк, я понимаю как это выглядит. Но тема то интересная

 , , ,

vertexua ()