Записки IT специалиста
7.8K subscribers
1.47K photos
48 videos
15 files
2.1K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
Download Telegram
Исправляем ошибки запуска клиента 1С:Предприятие в современных выпусках Linux

Отношения клиентского приложения 1С:Предприятие и Linux безоблачными не назовешь, хотя нативный клиент для Linux существует уже довольно давно.

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

Сегодня мы разберем основные типовые проблемы запуска и пути их решения. А также немного прольем свет на причины всего происходящего.

https://interface31.ru/tech_it/2024/08/ispravlyaem-oshibki-zapuska-klienta-1spredpriyatie-v-sovremennyh-vypuskah-linux.html
Почему не работают записи в /etc/sudoers?

Многие знают, что sudo гибко настраивается через файл /etc/sudoers.

Например, можно убрать запрос пароля:

andrey ALL=(ALL:ALL) NOPASSWD:ALL

Но иногда надо просто разрешить несколько команд, тоже без пароля:

andrey ALL =(ALL:ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt full-upgrade

Добавим в файл, как на первом рисунке и что? И ничего, все равно просит пароль.

Ок, посмотрим что может пользователь:

sudo -l

И видим, что его правило перекрывается

ALL=(ALL:ALL)

Да, в /etc/sudoers нижестоящие правила перекрывают вышестоящие! ☝️☝️☝️

Так, но откуда оно?

А вот отсюда, так как мы входим еще в группу sudo:

%sudo   ALL=(ALL:ALL) ALL

Меняем порядок записей (рис. 3) и все работает как надо!

На скриншотах можно увидеть еще несколько полезных команд:

sudo -k

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

sudo !!

Повторить вместе с sudo последнюю команду (если вы забыли про sudo).
​​Лог включен, но мало помогает

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

И, к сожалению, подобные отзывы не единичны. Многие считают, что лог должен… А вот что он должен?

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

Почему так? Начнем с самого лога. Чтобы лог приносил пользу – он должен содержать записи об интересующих нас событиях. А для этого нужно правильно настроить подробность лога.

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

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

Еще одна классическая ошибка – смотрим не туда. Чаще всего это связано с тем, что «ошибка» в понимании пользователя не является ошибкой для сервиса и соответственно вы не увидите никакой записи об ошибке в таком случае.

Характерный пример – это состояния HTTP, многие из которых воспринимаются клиентом именно как ошибки. Но для самой системы это вполне допустимые и документированные состояния, которые являются частью штатного рабочего процесса.

В результате получается, что мы ищем то, чего нет. Поэтому не следует ограничивать себя каким-то фильтром или иным отбором по некоторым условиям, которые могут не совсем соответствовать или совсем не соответствовать реальной ситуации.

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

А смотреть надо в корень – на событие, которое должно вызвать реакцию сервиса. И начинать плясать от печки, т.е. от той системы – которое это событие инициализировала, а не от той, которая должна обработать.

Это позволяет быстро и эффективно выявить ситуации, когда мы обращаемся не туда или не так. Например, как это часто бывает, ваши запросы блокируются брандмауэром, а вы пытаетесь безрезультатно терзать веб-сервер.

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

А еще – логи нужно уметь читать. Мы сейчас не будем брать во внимание крайний случай, когда квалификации явно недостаточно и все написанное в логе является «китайской грамотой».

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

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

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

И помните, сам себя лог не прочитает и его отсутствие или наличие никак на работу системы не влияет. Лог нужен именно вам и нужен для того, чтобы вдумчиво его читать и анализировать. Также вы должны хотя бы в общих чертах понимать, что там написано и как вообще вся эта система работает.

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

Поэтому просто включить лог – это мало, нужно понимать что именно вы хотите в нем увидеть и почему именно в нем.
​​Используем спецсимвол ! в командной строке Linux

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

Поэтому попробуем заполнить этот пробел. Восклицательный знак используется для повторения команд и аргументов команд. В самом простейшем виде наберите:

!!

И оболочка повторит последнюю набранную команду. Это удобно, если команда требует повышения прав, тогда вместо перепечатывания команды заново достаточно написать:

sudo !!

Немного сложнее, если команду надо было выполнить от другого пользователя, например, postgres:

su -c “!!” postgres

Также с помощью восклицательного знака легко повторить команду из истории, выполните

 history


Посмотрите номер нужной команды и введите:

 !38


Что заново выполнит команду из истории под номером 38.

Также мы можем повторить выполнение команды со всеми аргументами, допустим мы выполнили:

cat /home/andrey/123.txt /home/ivan/321.txt

Для ее повторения достаточно выполнить:

 !cat


или вообще



Достаточно ввести одну или несколько букв, которые однозначно могут определить команду в текущей сессии.

Мы можем не только повторить, но и добавить аргументы, например:

!cat /home/andrey/456.txt

Что будет эквивалентно

cat /home/andrey/123.txt /home/ivan/321.txt /home/andrey/456.txt

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

Для первого и последнего используйте !^ и !$

Так после выполнения последней команды мы можем указать:

 cat !^ !$


Что приведет к выполнению:

 cat /home/andrey/123.txt /home/andrey/456.txt


Либо можем указать аргументы явно, для последней команды можем использовать !:2 – второй аргумент, или указать команду явно, тогда будет использован указанный аргумент последнего запуска команды:

cat !cat:2

Будет аналогичен:

cat /home/andrey/456.txt

Обратите внимание, что к аргументам также относятся и ключи, поэтому если после запуска

cat -n /home/andrey/456.txt

Вы введете:

cat -n !^

То будет выполнен:

cat -n -n

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

Работая в консоли Linux, начинающие делают ошибки, это нормально. Гораздо хуже, когда ее не удается быстро исправить или поиск информации затруднен.

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

Утилита разработана на Python и для ее установки выполните:

sudo apt install python3-dev python3-pip python3-setuptools
pip install thefuck -–user

Обратите внимание, что саму утилиту, в отличие от зависимостей, следует устанавливать с правами того пользователя, который будет ей пользоваться, а ключ -–user предписывает установить утилиту только для текущего пользователя.

После чего в файл .bashrc внести строку:

eval $(thefuck --alias fuck)

Которая добавит для команды алиас fuck, если вам ближе родная речь, то можете написать:

eval $(thefuck --alias blya)

Затем перечитайте значения из файла или перезапустите сеанс:

source .bashrc

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

fuck

Утилита тут же предлагает нам исправление, достаточно нажать Enter, но теперь снова ошибка, мы запустили команду с недостаточным набором прав. Снова вызываем утилиту, и она нас снова поправляет.

Чтобы избежать постоянного вызова утилиты можно запустить ее в режиме повторения:

fuck -r

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

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

fuck -y

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

Больше об утилите можно узнать на официальной странице Git: https://github.com/nvbn/thefuck
​​Настраиваем Visual Studio Code для удаленной работы через SSH

Сегодня все чаще и чаще для конфигурационных файлов используются продвинутые текстовые форматы, такие как JSON или XML, имеющие строгий синтаксис и структуру.

Их применение облегчает программную обработку данных, но при этом они все еще остаются легко читаемыми человеком.

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

Поэтому гораздо удобнее использовать для этого специальные среды разработки, например, VS Code, тем более что он прекрасно умеет работать через SSH.

https://interface31.ru/tech_it/2024/05/nastraivaem-visual-studio-code-dlya-udalennoy-raboty-cherez-ssh.html
Прикупил себе обновку

Пользуясь поводом, прикупил пару недель назад себе обновку - Galaxy Watch Ultra 7. До этого я где-то в течении года искал на что поменять HONOR MagicWatch 2. В итоге приобрел Amazfit Balance, но все время меня преследовало ощущение, что поменял «шило на мыло».

А тут попались на глаза и, как говорится, зацепили. И есть чем. Внешний вид сразу выделяет часы из себе подобных. Материалы – титан и сапфировое стекло, несмотря на размеры часы на руке практически не ощущаются.

Размер. Часы крупные, как по горизонтальным размерам, так и в толщину, здесь на любителя, мне нравится. Кому-то могут оказаться велики. Кроме того, квадратная форма делает их визуально массивнее.

Экран – яркий, сочный, на солнце не слепнет. Если сравнивать с Amazfit Balance, то экран однозначно лучше. Хотя вроде все те же 480x480 при плотности пикселей в 327 ppi.

Циферблаты – просто отличные, достаточно проработанные и с весьма высокой степенью кастомизации. Настраивается буквально все, вы можете взять любой стандартный циферблат и вывести на него именно то, что нужно именно вам.

Теперь о внутреннем мире. Если сравнивать с HUAWEI / Amazfit – то это совсем другой уровень. Гораздо более продвинутая работа с датчиками и более полные и адекватные показания.

Скажем, только тут показатель стресса начал более-менее коррелировать с собственными ощущениями. Но не может быть уровень стресса низким после часа игры в футбол или высоким в то время, когда ты спокойный как удав лежишь в тенечке на даче.

Здесь – именно адекватно. Также гораздо более информативно интерпретируются показатели пульса, сна и т.д. и т.п.

Если те же HUAWEI / Amazfit мне просто писали про то, что сон у меня не очень, просто потому что не укладывается в некоторый шаблон, то Galaxy по накопленным данным выводят архетип сна и работают уже с ним.

После чего выясняется, что проблем особых и нет, просто кто-то спит так, кто-то по-другому. И в целом виден упор софта на персонализацию, когда все аналитические показатели строятся вокруг именно ваших средних значений.

А это уже интереснее и полезнее, потому как если какой-то показатель, даже оставаясь в пределах нормы, вдруг ощутимо отклонился от средних значений – то часы вам об этом сообщат.

Коммуникации тоже на высоте, практически любое действие с часов можно быстро и удобно перекинуть на телефон. Адекватно и обратное взаимодействие. Если вы прочитали уведомление на телефоне, часы его вам показывать больше не будут.

Также это первые на моей памяти часы (кроме «яблок»), которые имеют нормальный голосовой ввод. Они не требуют разговаривать медленно и по слогам, как со слабоумным, достаточно в обычном темпе надиктовать ответ на сообщение и часы быстро и без ошибок превратят речь в текст.

Из минусов – автономность. Если сильно не баловаться и не включать все датчики – автономность будет около 2,5 – 3 суток. Зарядка беспроводная, занимает примерно 2 часа.

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

В общем, как и везде, свой набор компромиссов. Ну и не забываем, что часы, в том числе и электронные, особенно в ценовой категории от средней и выше, это не только и не сколько гаджет, но и аксессуар.
Please open Telegram to view this post
VIEW IN TELEGRAM
​​Система автономного обновления Linux

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

Теперь мало просто запустить обновление, нужно еще обязательно перезагрузить систему и дождаться их установки. Кто-то воспринял данные новшества положительно, но многим это не понравилось, поэтому в данном материале мы постараемся подробно рассмотреть этот вопрос.

Сразу оговоримся, что речь в данном случае идет сугубо о системах с графической оболочкой.

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

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

Вторая проблема – это возможная работа пользователя в процессе обновления, Linux умеет заменять файлы уже запущенных приложений, но не все приложения умеют корректно обрабатывать такую ситуацию.

Тот же Firefox обнаружив обновление файлов программы попросит вас перезапустить браузер, но иные программы могут завершиться с ошибкой, зависнуть, вызвать темный экран и т.д. и т.п.

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

Из этого вытекает третья проблема - выключение питания или перезагрузка системы во время обновления. Несмотря на то, что такое действие не приводит к действительно фатальным последствиям, но для обычного пользователя невозможность загрузить графическую оболочку равносильно отказу системы.

Чтобы решить все эти проблемы была разработана система автономного обновления, которая состоит из двух основных компонентов: пакетного менеджера и специальной службы systemd.

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

Но, как мы помним, дергать пользователя по пустякам – это очень плохо. Поэтому в зависимости от статуса обновления systemd может не спешить уведомлять пользователя об их наличии, а делать это, скажем, раз в неделю.

Также на пользователя не вываливается вся куча обновлений, а разбивается на метапакеты: обновление системы (23 пакета), обновление KDE (15 пакетов), обновление Firefox, LibreOffice и т.д., что делает процесс более понятным для пользователя.

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

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

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

При загрузке в нормальном режиме пользователь получит сообщение либо об успешном обновлении системы, либо об ошибке.

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

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

С технической стороны это делает систему более надежной и практически на 100% гарантирует ее загрузку в графическом режиме (за исключением действительно серьезных проблем).
​​Специальные символы-операторы командной строки Linux

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

Начнем с символа & - амперсанд. Этот оператор заставляет команду работать в фоновом режиме. Т.е. если вы знаете, что команда выполняется какое-то продолжительное время, просто отправьте ее в фон следующим образом:

command &

Но будет ошибкой использовать ее для объединения команд, чаще всего ошибаются похожим образом:

apt update -y & apt full-upgrade -y

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

Для объединения команд используется оператор && - логическое И. Несмотря на всю схожесть с прошлым оператором ее смысл совсем иной. В конструкции:

command _1 && command _2

Вторая команда выполниться только при успешном выполнении первой, т.е. если она вернула код выхода 0.

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

apt update -y && apt full-upgrade -y && apt autoremove -y

Также все знают оператор | - пайп или труба. Он позволяет передать поток вывода одной команды в поток входа другой.

А вот если мы поставим подряд две трубы - || - то получим оператор логическое ИЛИ, в конструкции:

command _1 || command _2

Вторая команда будет выполнена только тогда, если первая вернет код ошибки.

В более сложных конструкциях можно использовать И – ИЛИ:

command _1 && command _2 || command _3

Если первая команда завершилась успешно, то будет выполнена команда 2, иначе – команда 3.
Please open Telegram to view this post
VIEW IN TELEGRAM
​​PortQry v 2.0 – консольный сканер портов для Windows

Инструментов для диагностики сети хватает, но лишних среди них не бывает, поэтому сегодня хотим рассказать о консольном сетевом сканере от Microsoft - PortQry v 2.0, получить его можно на официальной странице: https://www.microsoft.com/en-us/download/details.aspx?id=17148

Использовать ее довольно просто, нам потребуется указать несколько параметров:

-n – точка назначения – имя или адрес сетевого узла
-p – протокол, доступны значения: tcp, udp, both, по умолчанию tcp.
-e – порт назначения
-o – перечень портов через запятую
-r - диапазон портов через двоеточие

Например:

PortQry.exe -n 192.168.100.125 -p udp -e 1194

или

PortQry.exe -n 192.168.100.125 -o 80, 443


В зависимости от результата вы получите одно из значений:

Listening – если порт открыт и ответ от него получен

Not Listening – если на целевом узле не запущен процесс обслуживающий порт и система сообщает ICMP «Destination Unreachable - Port Unreachable» или получен TCP-пакет с флагом Reset.

Filtered – если система не направила никакого ответа или запрос был отфильтрован брандмауэром.

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

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

Таким образом, чтобы определить, действительно ли порт открыт или фильтруется PortQry использует расширенные проверки для ряда протоколов, в их число входят: LDAP, RPC, SMTP/POP3/IMAP4, SNMP, FTP/TFTP, NetBIOS, MS SQL, L2TP и ряд других.

На картинке внизу показан запрос к порту MS SQL, утилита первоначально проверила порт и выдала предварительную оценку: LISTENING or FILTERED.

После чего выполнила расширенную проверку и убедилась, что на данном узле запущен экземпляр службы SQLEXPRESS и окончательный вердикт стал LISTENING.

В некоторых случаях может потребоваться использовать определенный порт источника, в этом случае используйте следующий ключ (указанный порт не должен использоваться другими процессами):

PortQry.exe -n 192.168.100.125 -sp 25 -e 25


Кроме того, у утилиты существует локальный режим, в котором она работает с сетевыми процессами хоста, в этом варианте интересными могут быть ключи:

-local – показывает информацию обо всех активных портах и соединениях локального узла
-wport – мониторит сетевую активность указанного порта
- wpid – мониторит сетевую активность процесса с указанным PID

Данные возможность удобно использовать с записью в лог файл:

PortQry.exe -wport 3389 -wt 5 -l rdplog.txt


Где ключ -wt задает частоту опроса в секундах, доступные значение 1-1200, по умолчанию 60 сек, а ключ -l указывает файл журнала, при указании относительного пути журнал создается в директории с утилитой.

Размер заметки не позволяет перечислить все возможности, поэтому дадим ссылку на страничку официальной документации: https://learn.microsoft.com/ru-ru/troubleshoot/windows-server/networking/portqry-command-line-port-scanner-v2

А также советуем взять утилиту на вооружение, особенно если вам приходится часто заниматься устранением неисправностей и диагностикой Windows сетей.
Denwer. Кто помнит — уже не джун
Напомнили сегодня про Denwer — тот самый джентльменский набор разработчика. Кто ставил — поймёт. Кто не ставил… ну вы просто молоды)) забавно было вспоминать про инструменты, которые выдают в тебе возвраст разработчика, и объяснять это тем, кто в IT недавно)

🔥 Кто помнит — ставим огоньки)

© TheITDirector - авторский канал ИТ директора про опыт и системность.

#webdev #php #алдытут
Реклама. Бархударян Э.Э. ИНН 771575954801. erid: 2W5zFK1Bi2t