Автор Тема: Customizer  (Прочетена 4153 пъти)

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
Customizer
« -: Oct 19, 2010, 23:44 »
Здравейте.

Първо искам да подчертая, че не съм кой знае колко опитен, но набирам скорост. Та направо към въпроса -- започнах да пиша една програмка ( нищо сложно, просто bash скриптчета ), с която да можеш да си правиш собствения дистрибуция на базата на Убунту. Целта ми е да "навляза" в света не програмирането като започна от някаде и реших, че bash не е толкова труден и сложен език за програмиране. Дотук добре, научих по-основното и с всеки ден по-добър ставам  :P . Програмката не е от особенно значение ( неискам да се фукам, тей като има хора много по-напред от мен в програмирането ), но все от някаде трябаше да започна. За в бъдеще мисля да науча и Python или C, но засега ще остана на bash.

Всяко мнение по въпроса как да осъвършенствам, оптимизирам или добавя финкция в програмката ще ми е от полза, така че пишете на воля  ;).

Можете да свалите последната версия от ТУК

Ето и повече инфо за програмката:



използва Убунту ISO-файл за основа ( Ubuntu-Mini-Remix ISO например )

Основните функии и опций на програмката са:
 -- Автоматична инсталация на нужните програмки
 -- CLI-Chroot
 -- GUI-Chroot ( използва Xephyr )
 -- Автоматично инсталиране на програми от предварително зададени листи ( минимална или пълна графична среда като Gnome, KDE и др. ) или променяне на листа ръчно
 -- Стартиране на Synaptic в Chroot среда
 -- "Разглеждане" на екстракнатата файлова система като ROOT ( за по-лесна донастройка, добавяне на файлове и др. )
 -- "Разглеждане" на ISO папката като ROOT ( добавяне на файлове и др. )
 -- Промяна на LiveCD ХОСТ-име, ЮЗЪР-име и пълно ЮЗЪР-име
 -- QEMU ( подкарва ISO-то под виртуална машина )
 -- Автоматичен ISO-билд
 -- Изчистване на временните файлове и директорий
 -- Автоматично инсталиране на DEB пакети
 -- Автоматично изпълняване на команди в Chroot среда
 -- Преглед на инсталираните пакети в лист
 -- Лесно и бързо копиране на файлове
 -- Запазване или отваряне на проекта в/от файл (snapshot)
и други...


Програмката се инсталира в директорията /opt/Customizer. Програмката си прави линк в System Tools във вашето меню.
« Последна редакция: Dec 01, 2011, 03:41 от smil3y »
Активен

We're living in the future so the present is our past!

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
1. Нужно ли е разширението да е bash, не може ли просто да е sh
2. след като имате дефиниран интерпретатор на първия ред на всеки скрипт защо го викате с bash ime_na_script.bash?
3. никъде не проверявате като какъв потребител се стартира скрипта, а някои операции може да са възможни само за root
4. навсякъде предполагате че се намирате в правилната директория, а това може да е много опасно предположение
5. Никъде не проверявате дали скрипта, който стартирате го има наистина
6. задавайте пълни пътища към командите, никой не ви дава сигурност че нещо ще го има в пътя
7. опитайте се да окрупните файловете и да отделите всички функции в един отделен файл

П.П. Bash далеч не е добра стартова точка за да се учите на програмиране
Активен

0x2B|~0x2B

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
НАКРАТКО:

1. Еми има разлика между bash и sh -- bash е една от многото shell-ове които Линукс използва. Аз пердопочетох да използвам bash а не sh, затова и разширението е *.bash
2. Зашото така се стартират bash скриптове от терминал
3. НАПРОТИВ -- проверява се в почти всеки "енджин" ( основнен скрипт в програмата ми ). В началото на вески съм включил проверка
4. да, опасно е, НО тепърва ще вклиючвам и ИФ елементи в скриптовете за проверка на файловете и функцийте. Просто реших да имам някаква основа, която да мога да доразвия в последствие
5. дам, погледни пак 4
6. не съм задал пълните пътища, за да може програмата да работи в всяка директория а не да има проблеми при разархивиране в произволна папка. Например ако аз съм я правил да работи под директория /home/moeuserime/U-Customizer , дори и да я сложиш в твоята хоум директорията, програмата няма да работи, тей като юзър името не е същото като моето
7. Съжелявам. но май не си преглеждал програмката подробно -- направил съм го. Основните скриптове ( отделни за всяка основна функция ) са в папка ENGINE, има папки за лог-файловете, за конфигурационните файлове, а нужните папки, за да работи програмта ( TEMP и CHROOT ) се създават ако не съществуват.

Моля, хвърли й един поглед ( по-подробно ) и питай ако има нещо др. Ще се опитам да го обесня, ако мога разбирасе, ако ли не ще потърся инфо в нета и тогава ще се опитам да ти обесня, за да не стане хаус.

Мисля да започна да правя GUI за програмката ( с Glade или QT4 ), за да вида дали ще се справя ( поне до някаква степен ), но ще пада четене преди да се получи нещо, което да работи дори на на 10% :D ..

П.П. Може и да съм сбъркал някъде, но се съмнявам. Ако все пак съм сбъркал, някой по-опитен да ме поправи. А, и.. защо имам чувството, че ме пробваш на акъл ???
« Последна редакция: Oct 20, 2010, 21:31 от smil3y »
Активен

We're living in the future so the present is our past!

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
1. Еми има разлика между bash и sh -- bash е една от многото shell-ове които Линукс използва. Аз пердопочетох да използвам bash а не sh, затова и разширението е *.bash
Интересно защо скриптовете независимо дали са на корн или бърн под UNIX са си все sh
2. Зашото така се стартират bash скриптове от терминал
А да си чувал за флаг Х. И ако така стартираш чий го крепи това в първия ред:
Код:
#!/bin/bash

3. НАПРОТИВ -- проверява се в почти всеки "енджин" ( основнен скрипт в програмата ми ). В началото на вески съм включил проверка
Къде са тези проверки, погледнах, меню, едитап и нямат
4. да, опасно е, НО тепърва ще вклиючвам и ИФ елементи в скриптовете за проверка на файловете и функцийте. Просто реших да имам някаква основа, която да мога да доразвия в последствие
Това трябва да се направи още в началото, не после!
5. дам, погледни пак 4
Предишния ми коментар
6. не съм задал пълните пътища, за да може програмата да работи в всяка директория а не да има проблеми при разархивиране в произволна папка. Например ако аз съм я правил да работи под директория /home/moeuserime/U-Customizer , дори и да я сложиш в твоята хоум директорията, програмата няма да работи, тей като юзър името не е същото като моето
Кой е казал че е нужно да се задава твърдо пътя, man dirname
7. Съжелявам. но май не си преглеждал програмката подробно -- направил съм го. Основните скриптове ( отделни за всяка основна функция ) са в папка ENGINE, има папки за лог-файловете, за конфигурационните файлове, а нужните папки, за да работи програмта ( TEMP и CHROOT ) се създават ако не съществуват.
Идеята ми беше да се съберат функциите в един файл, не да има във всеки, това, което видях ми се видя ужасно разхвърляно
...

Мисля да започна да правя GUI за програмката ( с Glade или QT4 ), за да вида дали ще се справя ( поне до някаква степен ), но ще пада четене преди да се получи нещо, което да работи дори на на 10% :D ..

tcl/tk
П.П. Може и да съм сбъркал някъде, но се съмнявам. Ако все пак съм сбъркал, някой по-опитен да ме поправи. А, и.. защо имам чувството, че ме пробваш на акъл ???
Не, но ти не си се научил да слушаш и приемаш критики. А, и да четеш повечко за ОС, не само отгоре-отгоре...
П.П. И между другото такъв код е глупав:
Код:
cd ENGINE
bash InstallTools.bash
този също, особено с тези изчиствания на екрана. Ами ако съм с tty?
Код:
clear
rm ENGINE/configs/APPLIST
cp ENGINE/configs/applist_presets/minimal/OPENBOX ENGINE/configs/APPLIST
clear
Защо дефинираш функции с по един ред като можеш да изпълниш същото в case?


П.П.П. Не ме карай да навлизам по-навътре, по-добре преосмисли философията и започни от начало

Активен

0x2B|~0x2B

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
Ами честно казано аз това търся -- критики, за да знам как да осъвършенствам кода. Знам, че има много "боклук" в него, но в бъдеще ще го оптимизирам ( по-ясен и кратък код без ненужни команди ). Ще постъпя разумно и няма те занимавам с програмката докато не "изчистя" скриптовете. И все пак ако имаш  конкретни предложения как да заместя част от код с друг, опиши какво с какво да заместя. Иначе аз съм нов в занаята, така че моля да бъда извинен ако не съм напвавил нещо както трябва в скриптовете.

П.П. Явно хората които следят форума са доста заети. Еми да, разбирам ви -- на разбирачите не им се занимава с тъпи въпроси ( неискам да прозвучи грубо, но е факт ). Затова може би най-добрият вариант е да чета из нета, да науча туй-онуй, пък каквото стане в крайна сметка  :D
Активен

We're living in the future so the present is our past!

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
Оф, знам че сте заети хора но имам един странен проблем. Когато опитам  да пусна скрипта за проверка, който направих, ми дава следния резултат в лог-файла:

Check.sh: line 99: syntax error near unexpected token `else'
Check.sh: line 99: `else'

В скрипта всичко е наред, но просто неиска да се пущи ако неизтрия редовете за проверка на .диск папката. Ако ми обясните защо става така ще съм мн благодарен.

Благодаря предварително  :)
Активен

We're living in the future so the present is our past!

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Не си си довършил if-a на ред 97. Това
Код
GeSHi (Bash):
  1. ...
  2. if [ -d TEMP/disk ]
  3.    echo "# TEMP/.disk [OK]"
  4. else
  5. ...
трябва да бъде така
Код
GeSHi (Bash):
  1. ...
  2. if [ -d TEMP/disk ]; then
  3.    echo "# TEMP/.disk [OK]"
  4. else
  5. ...
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
 :o мерси. Мн тъпа грешка  ;D. Иначе скоро ще пусна нова версиика, която доста си поиграх да преработя. Останаха ми само менютата и ще обновя темата. Мерси отново  ;D
Активен

We're living in the future so the present is our past!

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
Така. обнових темата с новата версийка. Сега искам да попитам дали на някой му се прави ГУИ за скриптовете ( малко се съмнявам ). Ако не, ще се ровя в нета, ще си бия главата в стената, пак ровене в нета, бой.. та така докато стане. Единствения проблем е че незнам как   да настроя бутоните и др. работи да дават коректен сигнал, за да въздействат на конфигурационните файлове и да пускат скриптовете. Та започвам да ровя пък ще видин до каде ще стигна  :D . Иначе прикачам към поста и скрииншот и файловете, който успях да скалъпя набързо, за да дам пример какво искам да се получи.
Активен

We're living in the future so the present is our past!

nedyalkor

  • Новаци
  • *
  • Публикации: 1
    • Профил
Не съм ти разглеждал скрипта, но ако идеята ти за графичен интерфейс не включва много сложни елементи можеш да използваш следните неща:
  - dialog - за ncurses интерфейс
  - kdialog - за QT
  - zenity - за GTK
  - xdialog
Активен

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
Ами аз вече използвам Zenity диалози и др. работи  в скриптовете, но искам да направя нещо повече от това. Та, започнах да замислям нещо на Qt4, Направих основния прозорец с бутоните и др. ,но пустите сигнали още немога да ги оправя  :( . Те искат позняния върху Python , който ми  липсват за съжаление  :( , В момента чета като зубар, но ще ми отнеме доста време да науча основата и да мога да напваря нещо по-така.
Активен

We're living in the future so the present is our past!

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
:)

Страничният (неприятен) ефект е че ако root-ския user пусне това, всеки потребител може да го накара да направи лоши неща.

Примерно ползва се временен файл в /tmp с известно име, за да се wget-не google.com и съдържанието да се изсипе там. Колко му е преди това да създам един symlink примерно /tmp/index.google -> /lib/libc.so.6 и да гледам сеир :)

В UseImage, правиш TEMP директорията world-writable, впоследствие другаде видях че копираш файлове от една поддиректория в друга поддиректория на TEMP. Лоши идеи ми идват в главата, примерно това може нарочно да се накара да race-не - от момента, в който TEMP стане world-writable до момента в който се копират файлове, мога да презапиша source фаила и да symlink-на destination файла нанякъде - резултатът ще бъде да презапиша който си искам файл на системата (което означава сдобиване с root достъп - примерно чрез създаване на мой си cronjob в /etc/crontab).

Ъм лошото на шел скриптовете е че много лесно се изпускат такива неща.

П.П и все пак предвид това:

Цитат
sudo rm -rf /tmp/index.google

ln -s / /tmp/index.google ми се вижда много забавна идея :) Жалко че педалите от убунту развалиха хубавата команда rm :(
« Последна редакция: Oct 24, 2010, 01:34 от gat3way »
Активен

"Knowledge is power" - France is Bacon

c111100101

  • Гост
Всички сценарии за bash могат да бъдат написани на python. защо не пишеш директно на python, това е един от най-лесните езици за изучаване и същевременно предлага доста мощни инструменти за професионално програмиране дори.
Имам доста добри книги за python на руски. Щях да прикача тази книга Python.v.sistemnom.administrirovanii.UNIX.i.Linux.Noah.Gift.2009 но е много малък допустимия размер за прикачване.
Нея както и други интересни книги за програмиране на каквито се сетиш езици може да намериш тук: http://rutracker.org/
« Последна редакция: Oct 24, 2010, 13:48 от c111100101 »
Активен

smil3y

  • Напреднали
  • *****
  • Публикации: 19
  • Distribution: Debian
  • Window Manager: Fluxbox
    • Профил
    • WWW
Проблема е, че неразбирам руски  :D.. иначе започнах да чета тука там и намерих един мн добър сайт. Та сега чета усърдно в свободното си време ( което напоследък не е много  :( ) .

Първоначалната ми идея беше да направя скриптовете на базата на BASH, а после да направя и графичен интерфейс за нея с Glade, Qt4 или някоя друга подобна програмка ( изборът е голям ), но след като четох тук-там и пробвах няколко програмки за направата на ГИ разбрах, че повечето искат и познания върху Python. Тук идва момента на обрата -- започнах да си мисля, че наистина ще е по-добре програмката ИЗЦЯЛО да е написана на Python. Въпросът е, че тепърва ще свиквам с Python, а в момента имам сравнително добри скриптчета. Та може и да стане друго яче - да си остана с скриптовете, за само ГИ да е направен с Qt4 например, а останалото да си останат скриптчетата, тей като ще се наложи да пренапиша ВСИЧКО ( демек отначало   :( ).

Ще почета още, за да разбера доло горе какви са възможностите на Python и какви са недостатъците му ( дотук един ГОЛЯМ -- всичко трябва да е стрикно написано, което може да ми отнема доста време в дебъгване на писаниците ми ), пък тогава ще преценя какво да правя.
Активен

We're living in the future so the present is our past!

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
...
Ще почета още, за да разбера доло горе какви са възможностите на Python и какви са недостатъците му ( дотук един ГОЛЯМ -- всичко трябва да е стрикно написано, което може да ми отнема доста време в дебъгване на писаниците ми ), пък тогава ще преценя какво да правя.
Това, което смятате за недостатък всъщност е преимущество, защото учи на подреденост и кара да обмислите какво ще правите преди да се захванете всъщност да го правите. И в този смисъл Питон е по-добър "учител" за начинаещи програмисти.
Активен

0x2B|~0x2B