Сайт | Скачать | Видео | Wiki

Автор Тема: Скрипт по автоматическому переносу "горячих модулей" в базу (modules)  (Прочитано 23434 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
В любом случае прибито к pfs-util
А у меня свой, изначальный, вы же переделали всё до несовместимости.
Вообще-то проще всего сделать как в моём инсталлере, все подключенные модули копируются в modules автоматически без GUI.
« Последнее редактирование: 04 Июнь 2020, 18:59:19 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
переделали всё до несовместимости.
плата за доп. функционал
И не забывайте, что тема про пра (LF)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
И не забывайте, что тема про пра (LF)
Да чхал я на пра.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
ntf -k "yes" "трутруру" "лалала"

Окно с чекбоксами пустое  :'( Ну что не так  :'(

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5332
  • Репутация: +139/-1
Запустить ntf --test, чтобы посмотреть примеры. Как это все выглядит в виде параметров, посмотреть в скрипте /usr/local/bin/ntf:
Код
if [ "$1" = "--test" ] ;then
ntf -i "splash" "инфо"
#ntf -i5 "splash" "инфо 5сек."
ntf -e "splash" "ошибка"
ntf -hlp=ya.ru -q "тест" "???"
ntf -w "тест" "!!!"
ntf -a "тест" "alert"
ntf -l "т|е|к|ст" "заголовок" "текст"
ntf --help | ntf -t "from stdin"
ntf -3 "gtk-yes|yes да|1=gtk-no|no|2" "Заголовок" "текст"
ntf -k "gtk-yes|yes да|1=gtk-no|no|2" "Заголовок" "текст"
ntf -r "gtk-yes|yes да|1=gtk-no|no|2" "Заголовок" "текст"
ntf -c "Выбор файла (каталога)"
ntf -f "*" "заголовок" "текст"
exit
fi

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Ну что не так  :'(
ntf -k "gtk-yes|yes да|1=gtk-no|no|2" "Заголовок" "текст"

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
ntf -k "gtk-yes|yes да|1=gtk-no|no|2" "Заголовок" "текст"
Эта команда работает (см крин ниже) , а как ему скормить список, получаемый по команде ls -1 /mnt/.* |egrep '.pfs:$'
« Последнее редактирование: 04 Июнь 2020, 21:28:45 от Neyel »

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
tkdialog Examples, выбирайте на любой вкус.
Посмотрел, количество чекбоксов там задаётся статически, а мне нужно столько чекбоксов, сколько подключеннфх на горячую модулей

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Кажется начинаю врубаться
ntf -k "gtk-yes|да|1=gtk-yes|Нет|2=gtk_yes|Может быть" "Заголовок" "Текст"

Теперь надо придумать как список, получаемый командойй ls -1 /mnt/.* |egrep '.pfs:$' преобразовать к виду, понятному ntf -k
« Последнее редактирование: 04 Июнь 2020, 21:55:41 от Neyel »

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
ntf -k "true|да|1=true|Нет|2=true|Может быть" "Заголовок" "Текст"
А так с проставленными галочками  :)

Теперь надо придумать как список, получаемый командой ls -1 /mnt/.* |egrep '.pfs:$' преобразовать к виду, понятному ntf -k
« Последнее редактирование: 04 Июнь 2020, 22:29:12 от Neyel »

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Код
array=( $(ls -1 /mnt/.* |egrep '.pfs:$' |sed 's/\/mnt\/.//' |sed 's/:$//') )
k=1
VAR="true|"
str=""
for i in ${array[@]}
do
str="${str}${VAR}${i}|${k}="
let "k = k+1"
done
st=( $(echo $str | sed 's/=$//') )
ntf -k "$st" "Заголовок" "Текст"



Список как видите создать удалось, буду думать что делать дальше

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Код
array=( $(ls -1 /mnt/.* |egrep '.pfs:$' |sed 's/\/mnt\/.//' |sed 's/:$//') )
k=1
VAR="true|"
str=""
for i in ${array[@]}
do
str="${str}${VAR}${i}|${k}="
let "k = k+1"
done
st=( $(echo $str | sed 's/=$//') )
number=`ntf -k "$st" "Заголовок" "Текст"`
if [[ -z "$number" ]]; then
exit
fi
listnumber=($number)
for i in ${!listnumber[@]}
do
k=${listnumber[$i]}
let "k = k-1"
listnumber[$i]=$k
done
for i in ${listnumber[@]}
do
losetup -a | grep "${array[$i]}" | awk '{print $3}' | sed 's/(//' | sed 's/)//'
done



Выхлоп:
Код
live@pra6408:~$ ./test
/mnt/sdb4/lf01/optional/gtk3/030-gtk3-3.22.26_64-sf11.pfs
/mnt/sdb4/lf01/optional/gtk3/pulseaudio-gtk3-p-11.1_64-sf01.pfs
live@pra6408:~$
Осталось ещё пару штрихов  ;D

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Как узнать, из какой папки загрузился пра? Есть ли переменная в системе?
"/mnt/home/`egrep -o "(^| )dir=[^ ]+" /proc/cmdline | cut -d= -f2`"

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Конечный результат:
Код
array=( $(ls -1 /mnt/.* |egrep '.pfs:$' |sed 's/\/mnt\/.//' |sed 's/:$//') )
k=1
VAR="true|"
str=""
for i in ${array[@]}
do
str="${str}${VAR}${i}|${k}="
let "k = k+1"
done
st=( $(echo $str | sed 's/=$//') )
number=`ntf -k "$st" "Заголовок" "Текст"`
if [[ -z "$number" ]]; then
exit
fi
listnumber=($number)
for i in ${!listnumber[@]}
do
k=${listnumber[$i]}
let "k = k-1"
listnumber[$i]=$k
done
SYS_DIR="/mnt/home/`egrep -o "(^| )dir=[^ ]+" /proc/cmdline | cut -d= -f2`"
for i in ${listnumber[@]}
do
modules=( $(losetup -a | grep "${array[$i]}" | awk '{print $3}' | sed 's/(//' | sed 's/)//') )
cp $modules "${SYS_DIR}/modules/"
done

Само копирование осуществляется здесь:
Код
for i in ${listnumber[@]}
do
modules=( $(losetup -a | grep "${array[$i]}" | awk '{print $3}' | sed 's/(//' | sed 's/)//') )
cp $modules "${SYS_DIR}/modules/"
done

Можно ли сделать так, что пока выполняется этот цикл, было окошко "Идёт копирование" с бегающей слева направо полосой (прогресс)?

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Конечный результат:
Спасибо + . Кому-то понравился скрипт?
Можно ли сделать так, что пока выполняется этот цикл, было окошко "Идёт копирование" ?
Код
# wt
Usage: /usr/local/bin/wt [-s] "sleep 3" ["text"]
    выполняет "$1", во время выполнения, выводит "Выполняется "$1" ["text"]"
    и сообщает (ntf) о результате выполнения
        /usr/local/bin/wt -kill
    убивает все процессы /usr/local/bin/wt
/usr/local/bin/wt -start ["text"]
    бесконечный вывод
-o - не сообщать успешный результат выполнения
-s - не сообщать любой результат выполнения
с бегающей слева направо полосой (прогресс)?
В wt не реализовано, но в теории возможно. Пример в  wget-progress3