LINUX.ORG.RU

162
Всего сообщений: 2807

Монтирование windows-шары в linux

Есть пользователь с правами, соответственно, пользователя и со своей хоум директорией. И доступ есть только в хоум директорию. Задача - примонтировать в хоум директорию windows-шару на логон пользователя. Соответственно все дело должно происходить после логона в иксах. Сразу - .xinitrc в хоум пользователя почему-то не отрабатывает, mount -t из-под пользователя ругается на то, что ему нужен рут, sudo mount -t говорит - ой что за опция такая -t - я ее не знаю. Хожу по кругу и не моуг найти решения. Оно должно быть элементарным. Кто поможет?

 , ,

z3f ()

как победить echo 'aa00bb' | xxd -r -p

нули опускаются в бинарнике, а они нужны

 

wolverin ()

Bash awk редактор субтитров

Нужна срочная оплачиваемая помощь

titulky.sh -d dict1 -d dict2 -d dictn file1 file2 file3

где -d dict1 сообщает вашей программе, что текстовый файл dict1 должен быть загружен как словарь, который будет использован дальше . А остальные файлы file1 ... fileN загружаются как субтитры к фильмам. Которые даны в таком формате:

{20758}{20930}HELLO WORLD, BILL IS A YELLOW EXCAVATOR FROM USA. BUT|OUR JANE IS TOO!

где первые два числа без пробелов, заключенных в {a}, указывают начальный и конечный кадры субтитров сразу после (без пробела), за которыми следуют слова субтитров, которые содержат буквы английского алфавита и символы из набора,!?.

Ваша задача - отредактировать file1 ... filen файлы, чтобы они выглядели так: {20758}{20930}Hello world, Bill is a yellow excavator from USA. But|our Jane is too!

Так что делайте все в нижнем регистре, за исключением начала предложений, имен собственных (Джейн) и сокращений (США). Но у него есть подвох - Bill. «Bill» также переводится как счет, и поэтому слово «БИЛЛ» не может решить, будет ли он большим или маленьким. В этом случае ваша программа должна записать в журнал или вывод, что в этой строке он не уверен, и оставить «Bill».

slovo s slovo2 v slovo3 sv ZKRTKA MUDr. knife s knives read v reads read read

Если первый столбец - это слово в «голой» форме, второй столбец - это все части речи, которые могут быть существительным, глаголом и другими (это интересно).

Если слово неправильное и является существительным, оно имеет еще одно слово (knives) которая является формой множественного числа.

Для обычных существительных мы всегда используем окончание -s или -es (если слово оканчивается на -s, -sh, -x) или или -ies, если слово оканчивается на -y и до того, как y является согласной (согласная SK).

Сокращения в словарях, мы можем узнать потому что они не содержат никаких дополнительных слов в строке. (например, MUDR. или ZKRTKA)

Перемещено beastie из development

 , , , ,

wzwangel ()

как примонтировать директорию в /dev/null?

Мне нужно, чтобы все данные, которые будут копироваться в директорию, попадали в /dev/null. Как это реализовать?

 ,

serg002 ()

То ли лыжи не едут, то ли я не понимаю...

Есть скрипт, который выводит текущую раскладку:

killall kbdd 2>/dev/null
kbdd >/dev/null || exit 1

N=$( dbus-send --print-reply=literal --dest=ru.gentoo.KbddService\
    /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout 2>/dev/null |\
    sed -un 's/^.*uint32 //p' )
LAYOUT=$( dbus-send --print-reply=literal --dest=ru.gentoo.KbddService \
    /ru/gentoo/KbddService ru.gentoo.kbdd.getLayoutName uint32:$N )

echo $LAYOUT
echo "------"

if [[ $LAYOUT = "English (US)" ]]; then
  echo "АНГ"
  echo "АНГ"
  echo ""
else
  echo "РУС"
  echo "РУС"
  echo ""
fi

И есть вывод этого скрипта:

English (US)
------
РУС

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

 

flappyright ()

Вопрос по zenity

Подскажите как записать вводимые пользователем данные zenity в переменную?

OUTPUT=$(zenity --forms --width=400 --height=200 --title="Тест" --text="Данные для подключение:" --add-entry="логин" --add-password="Пароль" --add-entry="ip" )
accepted=$?
if ((accepted != 0)); then
    zenity --error --width=150 --height=50  \
       --text="Отказ от ввода данных"
    exit 1
fi
login=$(awk -F, '{print $1}' <<<$OUTPUT )
pass=$(awk -F, '{print $2}' <<<$OUTPUT )
ip=$(awk -F, '{print $3}' <<<$OUTPUT )

echo "Логин" $login
echo "Пароль" $pass
echo "Айпи" $ip

Пробовал через awk, но не выходит данные zenity отдает в виде login|pass|ip

 

vbox ()

Конвертация таблицы из PDF(TXT) в CSV

Есть задача, преобразования PDF-ки, которая представляет из себя большую таблицу, в CSV. С помощью pdftotext переконвертировал в текстовый файл, sed-ом подрезал лишний мусор в шапке, в заголовках страниц, остались голые данные. Дальше есть небольшая сложность, в оригинальном PDF, ячейка с отчеством была с переносом строки,

-----------------------------------------------
|1     |ГУРЦКАЯ |ОЛЬГА |ВЛАДИМИРОВ |21.03.1982|
|      |        |      |НА         |          |
|      |        |      |           |          |
-----------------------------------------------
|2     |АБАШИДЗЕ|ФАИК  |           |17.03.1951|
|      |        |      |           |          |
|      |        |      |           |          |
-----------------------------------------------

т.е. на примере первой строки отчество (3 колонка) «Владимировна» в текстовом файле оказалась «Владимиров» на первой строке, а «на» уже на другой строке.

Каким образом можно эти переносы «приклеить» назад к своим начальным частям, чтобы дальше уже с помощью какого-нибудь tr заменить пробел(ы) на ";" и получить нормальный файл с разделителями? Сейчас имеем такого рода файл:

1        ГУРЦКАЯ             ОЛЬГА       ВЛАДИМИРОВ 21.03.1982         8 д.            ПВДНП           23.05.2019       1/1                ЗП: Взр
                                       НА                                            изготовлен
2        АБАШИДЗЕ          ФАИК                    17.03.1951      7 д.            Сформирована    21.05.2019       3/4                ЗП: Взр
3        АБРАМОВА          ТАТЬЯНА     СВЯТОСЛАВОВ 10.11.1977        8 д.            ПВДНП           23.05.2019       1/1                ЗП: Взр
                                       НА                                            изготовлен
4        АЛЕКСЕЕНКОВА      АЛИНА        ИВАНОВНА      21.03.1977      10 д.           ПВДНП           23.05.2019       1/1                ЗП: Взр
                                                                                     изготовлен
5        АЛЕЩЕНКОВА        ВАЛЕНТИНА      КОНСТАНТИН    09.02.1955      8 д.            ПВДНП           23.05.2019       1/1                ЗП: Взр
                                       ОВНА                                          изготовлен
6        АНДОРСКАЯ         ЕКАТЕРИНА   ВИКТОРОВНА    18.03.1993      10 д.           ПВДНП           23.05.2019       1/1                ЗП: Взр
                                                                                     изготовлен

 , ,

karasic ()

Вопрос о цветах и терминале. (На самом деле я плохо владею терминологией, поэтому этот заголовок заведомо некорректен)

1.

Есть команда на баше:

$ tree

Если я выполню эту команду в своём терминале - я увижу цвета.

Есть другая команда на баше:

$ tree | cat

Если я выполню эту команду в своём терминале - я не увижу цвета.

У меня есть догадки что это как-то связано c переменными окружения.

Хотелось бы услышать наиболее «глубинный» ответ (хотя бы в виде ссылок, но желательно с пояснениями). Ещё прошу поправить терминологию в моём сообщении.

2.

Вот ещё строчка из $ man ls.1:

ls emits color codes only when standard output is connected to a  terminal.

Пожалуйста, разъясните мне её.

 

alois ()

Двойное условие в скрипте bash

Допустим, я хочу проверить вывод какой-то команды на принимаемые значения, но делать что-то только в случае, если условия не выполняются. То есть мне нужно «успешно» завершить работу функции, если выполненная в ней команда вернула «0» или «2». Следующий код не работает (даже если ret = 0 или 2, то вываливает ошибку):

...
ret=$?

if [ "$ret" != "0" ] || [ "$ret" != "2" ]; then
   echo "FAIL"
fi

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

Или нужно обязательно городить такое:

...
ret=$?

if [ "$ret" != "0" ]; then
    :
elif [ "$ret" != "2" ]; then
    :
else
    echo "FAIL"
fi

?

 

grem ()

отправить и получить данные из последовательного порта в bash

echo -e "ATкоманда" > /dev/ttyUSB0
cat -v < /dev/ttyUSB0
sleep 2

Работает, но это не очень надежно т.к. данные иногда не читаются.

А как сделать надежно?

 ,

sniper21 ()

Враппер для mkdtemp — AWK?

И снова Здравствуйте!

Необходим враппер для mkdtemp, т.к. в OS X его нет, а есть mktemp с опцией "-d", выполнящий эту же функцию.

Проблема в том, что некоторые пакеты хотят именно mkdtemp.

Вроде простой путь так:

/usr/bin/awk 'sub("mkdtemp", "mktemp -d"){print}'

Но ума не приложу как awk передать строку!

И с awk-v, и с exec трахался — ничего не выходит!

А может есть какой-то другой способ, без awk?

Заранее благодарю и за желание помочь и ОСОБЕННО за помощь!

P.S.

Пожалуйста, просто напишите строчку/и кода.

 , , ,

Cave-Canem ()

Коды возврата bash

Всем привет! Ищу список кодов возврата 0-255 для баша. В /usr/include/sysexits.h список не полный. Ну или подскажите что за ошибка, если $? == 228 :)

 

dnb ()

Хочу поставить Пенумбру. Как извлечь файлы из sh?

Понимаю тема избитая, но гугел назло нехочет ничего искать. В общем хочу поставить пенубру, а она пишет: Warning: No installer for "x86_64" found, defaulting to x86... Понимаю тема поднималась, да и сам решал вопрос самостоятельно, но сейчас что-то тупняк тотальный. ЛОР помоги

 , , ,

Kaernk ()

pid процесса

Приветствую Вас форумчане. Прошу помощи. Не пинайте. С линухом пока знаком не очень хорошо. Итак. При запуске ОС (ubuntu 16.04) нужно считать pid определенного процесса. Как только pid процесса изменится выполнить команду poweroff. Собственно вся задача. Можно попробовать цыклом в скрипте. Но мне кажется есть способ элегантнее. Заранее благодарю всех кто откликнется!

 ,

rostma ()

Массив и пробелы

Есть строка вида:

' 11 1 1 ' "2 2 22" 3\ 3\ 3

Как из неё получить массив с элемантами:
11 1 1 , 2 2 22, 3 3 3?

 

teod0r ()

Мистическая история про линукс, трубы, и мёртвых котят

Добрый день. По какой причине сообщение может не доходить до получателя?

Как воспроизвести.

Выполняем в окне терминала

mkfifo mypipe
exec 3<>mypipe
while read -rt3 ss; do echo "${ss}"; done < <(cat mypipe)

в соседнем окне поочерёдно вводим что-то вроде такого (нужно успеть вводить в течение 3 секунд)

echo 'as1' >mypipe
echo 'as2' >mypipe
echo 'as1' >mypipe
echo 'as2' >mypipe
echo 'as1' >mypipe
echo 'as2' >mypipe

получаем

as1
as2
as1
as1
as2

или

as1
as1
as2
as1
as2

или не получаем, это работает не каждый раз.

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

В интернете говорят, что нельзя узнать степень заполненности трубы нормально, возможно удалось бы что-нибудь отследить. Отправлять ответ, что, мол, получили и прочитали? И если нет, то посылать ещё раз?

Может быть, избавиться от exec? Я пока не могу придумать как. Вот совсем не получается, блокируются и отправитель и получатель.

И, кроме того, в неинтерактивной сессии cat остаётся висеть в памяти вместе со скриптом, мне приходится писать kill cat при завершении, потому что её некому остановить. Как быть с этим? Я не могу закрыть трубу или сделать так, чтобы кошка отвалилась?

Справедливости ради, на практике мне первая проблема не встречалась. Что это, магия интерактивной сессии, или просто сложнее заметить?

 , , , ,

linuxnewbie ()

цикл в цикле или как получить то что хочу

Ситуация такая хочу из json дергать данные по скрипту и уже получать готовые данные

пробовал for in for, while in for, for in while, while in while. результата не дало

Очень простой пример

dns="yandex.ru mail.ru"
hosts="yandex mail"
hpath="$HOME/result"

echo "$(cat /dev/null > ${hpath})"

for n in $hosts; do
    echo $(echo $n >> ${hpath})
    for h in $dns; do 
        echo $(curl -I $h |grep 'Location\|Content-Length' >> ${hpath})
    done
done    

получаю либо такой вывод:

yandex
Location: https://yandex.ru/
Content-Length: 0
Location: https://mail.ru/
Content-Length: 185
mail
Location: https://yandex.ru/
Content-Length: 0
Location: https://mail.ru/
Content-Length: 185

либо после разных экспериментов, такой

yandex
Location: https://yandex.ru/
Content-Length: 0
mail
Location: https://yandex.ru/
Content-Length: 0
yandex
Location: https://mail.ru/
Content-Length: 185
mail
Location: https://mail.ru/
Content-Length: 185

хочу получить такой

yandex
Location: https://yandex.ru/
Content-Length: 0
mail
Location: https://mail.ru/
Content-Length: 185

Пример jsona

curl http://192.168.10.61:8085/data.json |jq '.Children[] | {CPU_temperature: .Children[1].Children[1].Children[] |select(.Text | contains("Core", "CPU Package")) |.Value}' |grep -v '{\|}' |tail -n1
curl http://192.168.10.71:8085/data.json |jq '.Children[] | {CPU_temperature: .Children[1].Children[1].Children[] |select(.Text | contains("Core", "CPU Package")) |.Value}' |grep -v '{\|}' |tail -n1

смысл в том чтобы вначале написать host или username а после уже вывод из json и так примерно по 6-7 курлов на каждый host

P.S. в списке будет больше значений, около 40 хостов

 , , , ,

testvtigercrm123 ()

Google Chart: HTML to PNG in console

Есть скрипт который генерит html файлы в формате гугл чарта.

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

вопрос: каким образом можно исходные html превратить в статичные картинки на линуксе без ДЕ?

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

 , , ,

nerve ()

Передача ключей в Bash скрипт

Ребят, помогите реализовать хотелку c dmenu.

Пример:

./dmenu.sh -x 15 -y 40 -h 28 -w 1000 .... -fn 'Font'

dmenu.sh

dmenu -nb black -nf white -sb blue -sf white

Пытался что-то колхозить с getopts / case, но ничего не получилось.

 , ,

flappyright ()

$(read -r var;echo $var)

Подскажите альтернативу этой конструкции в 1 команду, без переменных, спасибо. Я начинаю думать, что и так сойдёт.

 , , , ,

linuxnewbie ()