Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: smil3y в Oct 19, 2010, 23:44



Титла: Customizer
Публикувано от: smil3y в Oct 19, 2010, 23:44
Здравейте.

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

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

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

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

(http://u-customizer.eu5.org/images/U-Customizer.png)

използва Убунту 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 във вашето меню.


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: romeo_ninov в Oct 20, 2010, 11:40
1. Нужно ли е разширението да е bash, не може ли просто да е sh
2. след като имате дефиниран интерпретатор на първия ред на всеки скрипт защо го викате с bash ime_na_script.bash?
3. никъде не проверявате като какъв потребител се стартира скрипта, а някои операции може да са възможни само за root
4. навсякъде предполагате че се намирате в правилната директория, а това може да е много опасно предположение
5. Никъде не проверявате дали скрипта, който стартирате го има наистина
6. задавайте пълни пътища към командите, никой не ви дава сигурност че нещо ще го има в пътя
7. опитайте се да окрупните файловете и да отделите всички функции в един отделен файл

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


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 20, 2010, 20:15
НАКРАТКО:

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 ..

П.П. Може и да съм сбъркал някъде, но се съмнявам. Ако все пак съм сбъркал, някой по-опитен да ме поправи. А, и.. защо имам чувството, че ме пробваш на акъл ???


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: romeo_ninov в Oct 20, 2010, 22:22
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?


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



Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 20, 2010, 22:58
Ами честно казано аз това търся -- критики, за да знам как да осъвършенствам кода. Знам, че има много "боклук" в него, но в бъдеще ще го оптимизирам ( по-ясен и кратък код без ненужни команди ). Ще постъпя разумно и няма те занимавам с програмката докато не "изчистя" скриптовете. И все пак ако имаш  конкретни предложения как да заместя част от код с друг, опиши какво с какво да заместя. Иначе аз съм нов в занаята, така че моля да бъда извинен ако не съм напвавил нещо както трябва в скриптовете.

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


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 21, 2010, 23:07
Оф, знам че сте заети хора но имам един странен проблем. Когато опитам  да пусна скрипта за проверка, който направих, ми дава следния резултат в лог-файла:

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

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

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


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: neter в Oct 21, 2010, 23:12
Не си си довършил 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. ...


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 21, 2010, 23:20
 :o мерси. Мн тъпа грешка  ;D. Иначе скоро ще пусна нова версиика, която доста си поиграх да преработя. Останаха ми само менютата и ще обновя темата. Мерси отново  ;D


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 22, 2010, 23:25
Така. обнових темата с новата версийка. Сега искам да попитам дали на някой му се прави ГУИ за скриптовете ( малко се съмнявам ). Ако не, ще се ровя в нета, ще си бия главата в стената, пак ровене в нета, бой.. та така докато стане. Единствения проблем е че незнам как   да настроя бутоните и др. работи да дават коректен сигнал, за да въздействат на конфигурационните файлове и да пускат скриптовете. Та започвам да ровя пък ще видин до каде ще стигна  :D . Иначе прикачам към поста и скрииншот и файловете, който успях да скалъпя набързо, за да дам пример какво искам да се получи.


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: nedyalkor в Oct 23, 2010, 16:19
Не съм ти разглеждал скрипта, но ако идеята ти за графичен интерфейс не включва много сложни елементи можеш да използваш следните неща:
  - dialog - за ncurses интерфейс
  - kdialog - за QT
  - zenity - за GTK
  - xdialog


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 23, 2010, 22:35
Ами аз вече използвам Zenity диалози и др. работи  в скриптовете, но искам да направя нещо повече от това. Та, започнах да замислям нещо на Qt4, Направих основния прозорец с бутоните и др. ,но пустите сигнали още немога да ги оправя  :( . Те искат позняния върху Python , който ми  липсват за съжаление  :( , В момента чета като зубар, но ще ми отнеме доста време да науча основата и да мога да напваря нещо по-така.


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: gat3way в Oct 24, 2010, 01:11
:)

Страничният (неприятен) ефект е че ако 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 :(


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


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Oct 24, 2010, 19:31
Проблема е, че неразбирам руски  :D.. иначе започнах да чета тука там и намерих един мн добър сайт. Та сега чета усърдно в свободното си време ( което напоследък не е много  :( ) .

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

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


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: romeo_ninov в Oct 24, 2010, 19:45
...
Ще почета още, за да разбера доло горе какви са възможностите на Python и какви са недостатъците му ( дотук един ГОЛЯМ -- всичко трябва да е стрикно написано, което може да ми отнема доста време в дебъгване на писаниците ми ), пък тогава ще преценя какво да правя.
Това, което смятате за недостатък всъщност е преимущество, защото учи на подреденост и кара да обмислите какво ще правите преди да се захванете всъщност да го правите. И в този смисъл Питон е по-добър "учител" за начинаещи програмисти.


Титла: Re: Търся мнения от професионалистите ( bash скриптинг )
Публикувано от: smil3y в Nov 03, 2010, 13:28
ЗА ВСИЧКИ ФЕНОВЕ (  :D ):
новата версия е готова!!!

1. Имах проблеми с PC-то и това ми коства 5 ДНИ !  >:(
2. Вече има ГИ написан на Gambas2
3. В момента се занимавам с направта и тестването на деб пакет. След като приключа с него ще обновя темата


Титла: Re: >> U-Customizer <<
Публикувано от: smil3y в Nov 05, 2010, 00:28
Ето я и новата верскийка   :D -- 1.8.1


Титла: Re: >> U-Customizer <<
Публикувано от: smil3y в Nov 08, 2010, 23:56
Обновявям темата с нова версийка  :)


Титла: Re: >> U-Customizer <<
Публикувано от: bop_bop_mara в Nov 09, 2010, 10:14
Програмката се инсталира в директорията /usr/U-Customizer
Това сериозно ли?? Не може ли да е в някое по-общоприето място място (включено в $PATH да речем)?


Титла: Re: >> U-Customizer <<
Публикувано от: romeo_ninov в Nov 09, 2010, 12:19
Програмката се инсталира в директорията /usr/U-Customizer
Това сериозно ли?? Не може ли да е в някое по-общоприето място място (включено в $PATH да речем)?
Марче, права си че /usr/.... не е добро място, но по-подходящо би било /usr/local или /opt
Пътя лесно се "добавя" със софтлинк


Титла: Re: >> U-Customizer <<
Публикувано от: bop_bop_mara в Nov 09, 2010, 13:55
Програмката се инсталира в директорията /usr/U-Customizer
Това сериозно ли?? Не може ли да е в някое по-общоприето място място (включено в $PATH да речем)?
Марче, права си че /usr/.... не е добро място, но по-подходящо би било /usr/local или /opt
Пътя лесно се "добавя" със софтлинк
Дам, /opt е най-добре  [_]3


Титла: Re: >> U-Customizer <<
Публикувано от: smil3y в Nov 09, 2010, 18:45
Ще го оправя в следващата версия, благодаря за мненията  ;). Ако има нещо друго -- не се стеснявайте..


Титла: Re: >> U-Customizer <<
Публикувано от: smil3y в Dec 16, 2010, 02:45
Ако все още има хора, които се интересуват:

Уебсайт ($2)
Форум ($2)


Титла: Re: >> U-Customizer <<
Публикувано от: smil3y в Dec 01, 2011, 03:35
Здравейте!

Първо да се извиня, че "съживявам" стара тема, но не мисля, че да пусна нова е по-доброто решение.

Та, все още се занимавам с тази програмка. Измина доста време от както започнах да работя по нея и ето до къде стигнах - https://github.com/fluxer/Customizer.

Чета следната ($2) тема и гледам доста умни хора се събрали тука, та реших да попитам компетентните по върпросите ми.

Основата все още си е Bash, граичният интерфейс е писан на Gambas2 (Visual Basic за Линукс). Работя усърдно да я направя по-функционална и осъвършенствана, но все пак стигам до положение, до което става една голяма каша. В последните 2-дни се опитвам да организирам нещата, та да може, в крайна сметка, да е по-лесно за мен и за потрибелите, който искат, да четем кода. Най-добре ще е да сложа кода, който се използва често във функции или променливи - това го разбирам. Но, самата организация нещо ми куца.

Планирам Functions.sh да стане common и всичко обшо да е там, до тук добре. Но, идва един проблем - в скриптовете за chroot правя файл всеки път, това мога да разделя на два скрипта (подготовка и излизане от chroot-средата) но ми трябва контрол върху това което ще се случи между тези два скрипта. Идеята някак не ми харесва. Нещата се разделят твърде много на модули, в който трудно се следи какво се случва.

Пиша си с един приятел (Испанец) и той ми предлага да пробвам с Python, но ми се струва, че нещата ще станат много по-сложни от колкото са в момента. Да, Python предлага добър начин за управляване на грешките (try - except), но до момента само това ми  грабна вниманието. Дори аргументите към скрипт се "понасят" по-лесно при Bash, при Питона нещо не успях да намеря задоволителен начин да извикам функция с argparse модула.

Ако някой има идеи как бих могъл да организирам кода си по добър начин за лесна работа с него - да предлага!

ПП Бъдете милостиви, ползвам ГНУ/Линукс от малко повече от 1-година и не се считам за гуру  :D