linux

Linux: Раскладка переключается не с первого раза

Caps_lock
Картинка из википедии

Не всегда виновато железо.

Возникла странная проблема: нажатие капслока не приводило к переключению раскладки сразу.

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

Только повторное нажатие переводило раскладку в английскую.

Читать далее

linux

Bash: Передача аргументов в кавычках

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

#!/usr/bin/env bash
some_tools $@

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

#!/usr/bin/env bash
some_tools "$@"
HowTo, linux

Bash: подстановка процесса

2018-07-03-22:14:15_267x133Рассмотрим достаточно полезную штуку в консоли линукса (bash) как подстановка процесса.

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

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

Избавляемся от пайпов

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

Читать далее

HowTo, linux

Linux: Очистка дюз в принтерах Epson

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

На превью как раз такая проблема — забита часть сопел.

Читать далее

HowTo, linux

Fedora: сборка пакетов из src.rpm

2018-05-19-12:35:39_1076x631Чаще всего то не требуется обычному пользователю. Но бывает ситуации, когда пакет собран с поддержкой библиотеки исключенной из дистрибутива.

Недавно это случилось с chromium в centos, а с драйверами от epson случается постоянно.

$ cd imagescan-bundle-fedora-27-1.3.23.x64.rpm/
$ ./install.sh
[sudo] пароль для penguin:
Последняя проверка окончания срока действия метаданных: 2:53:00 назад, Сб 19 мая 2018 09:42:23.
Ошибка:
 Проблема 1: conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 2: package imagescan-plugin-networkscan-1.1.1-1epson4fedora27.x86_64 requires imagescan >= 3.9.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 3: package imagescan-plugin-gt-s650-1.0.0-1epson4fedora27.x86_64 requires imagescan >= 3.28.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64
 Проблема 4: package imagescan-plugin-ocr-engine-1.0.0-1epson4fedora27.x86_64 requires imagescan >= 3.14.0, but none of the providers can be installed
 - conflicting requests
 - nothing provides libboost_filesystem.so.1.64.0()(64bit) needed by imagescan-3.33.0-1epson4fedora27.x86_64

А еще это может потребоваться если мы хотим поставить пакет, который распространяется только в src.rpm.

Читать далее

HowTo, linux

Garmin в Linux: загрузка карт OSM

2018-05-12-15:21:02_1485x851Долгое время считалось, что загрузка карт в гарминовские навигаторы — это очень сложный процесс (на самом деле так и есть, особенно если вы подготавливаете карты вручную).

Но оказалось, что загружать карты все же возможно и можно делать это достаточно быстро. Нам потребуется wine, mapsource и дампы карты проекта gis-lab.

Читать далее

linux

sudo: sorry, you must have a tty to run sudo

Потребовалось выполнить команду из-под sudo на удаленном сервере.

Самое простое, что могло прийти в голову — это использовать stdin чтобы передать пароль для sudo (скрипт не ждет пользовательского ввода).

$ ssh server "echo password | sudo command"

Увы. Было получено сообщение из заголовка статьи.

Почему вообще такое происходит? Причина в том, что конфиг /etc/sudoers содержит опцию (если ее нет, то включите :))

Defaults requiretty
     requiretty        If set, sudo will only run when the user is logged in
                       to a real tty.  When this flag is set, sudo can only be
                       run from a login session and not via other means such
                       as cron(8) or cgi-bin scripts.  This flag is off by
                       default.

Как обойти эту опцию не правя конфиги? Довольно просто.

Нам потребуется использовать опцию -t для ssh, которая заставляет клиента принудительно открывать псевдотерминал даже если нужды в нем нет (работаем с stdin). А для sudo потребуется опция -S, которая заставляет считывать пароль из stdin.

$ ssh -t server "echo password | sudo -S command"

Работает.