Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Программирование и компиляция => Тема начата: DdShurick от 23 Август 2011, 12:48:56

Название: Скрипты для обсуждения.
Отправлено: DdShurick от 23 Август 2011, 12:48:56
 Скрипт /usr/local/apps/HomeDir/AppRun (всем известный "домик" в левом верхнем углу)
Код
#!/bin/sh
if [ "$(grep 'mount /dev/.... /home' /etc/rc.d/rc.local)" = "" ]; then
P=$(Xdialog --title "Выберите раздел" --inputbox "Выберите раздел для хранения файлов" 0 0 sda2 2>&1)
mount /dev/$P /home
 if [ ! $? = 0 ]; then
 Xdialog --title "Выберите раздел" --msgbox "Раздел $P выбран неверно,
выберите другой" 0 0
 exit 1
 else
echo "mount /dev/$P /home" >> /etc/rc.d/rc.local
mkdir "/home/Мои файлы"
 fi
fi
rox "/home/Мои файлы"
Скрипт создаёт каталог на выбранном разделе который находится вне системы и при этом легко доступен по клику мышью. В порядке эксперимента я прописывал путь к "Мои Документы" в Windows и всё открывается.
Название: Re:Скрипты для обсуждения.
Отправлено: DdShurick от 26 Август 2011, 18:22:02
 Скрипт /usr/bin/gnome-ppp
Код
#!/bin/sh
cp /etc/ppp/wvdial /etc/ppp/peers/
cp /etc/ppp/wvdial-pipe /etc/ppp/peers/
if [ -f /etc/resolv.conf ]; then
cat /etc/resolv.conf > /etc/resolv.conf.old
 if [ -h /etc/resolv.conf ]; then
 rm /etc/resolv.conf
 touch /etc/resolv.conf
 fi
else
touch /etc/resolv.conf
fi
if [ ! -h /etc/ppp/resolv.conf ]; then
[ -f /etc/ppp/resolv.conf ] && mv -f /etc/resolv.conf
ln /etc/resolv.conf /etc/ppp/resolv.conf
fi

gnome-ppp.bin

rm -f /etc/ppp/peers/wvdial
rm -f /etc/ppp/peers/wvdial-pipe 2>/dev/null
[ -f /etc/resolv.conf.old ] && cat /etc/resolv.conf.old > /etc/resolv.conf
CONF=$(sed 's/Stupid Mode = off/Stupid Mode = on/' ~/.wvdial.conf)
echo "$CONF" > ~/.wvdial.conf
exit 0
Название: Re:Скрипты для обсуждения.
Отправлено: k0l0p0k от 08 Октябрь 2011, 21:28:03
приветствую !
скрипт на Перле для проверки SFS-файлов (пока без gui ):
cheksfs.pl
Код
#запуск : perl cheksfs.pl [mySfsFile]
#анализируемый файл должен лежать в одной папке
#со скриптом либо указывается 1м аргументом
$fsfs=$ARGV[0];                           #проверим сначала аргументы
if ($fsfs eq "" ) {                       #  аргументов нет
  @sfs= `find *.sfs -type f 2> /dev/null`;#поищем в каталоге(текущем
  $fsfs=$sfs[0];
  $fsfs =~ s/\n//;                    #ищем и отсекаем конец строки
     if($fsfs eq "" ) {
print "не нашли sfs-файл\n";
#тут можно вывести юзеру подсказку
exit 0
     }
}
#
$k=0;$chek=0;
$sowpadenie="\n"; #
@result= `unsquashfs -ll $fsfs 2> /dev/null`;#аналог ls -l
#попробуйте unsquashfs -l и unsquashfs -ll в терминале
#разница заметна :)
$n=shift @result;
#проверим наш sfs
if($n eq "" ) {               #вроде работает :)
#print "Can\'t find a SQUASHFS in $fsfs\n";
print "не нашли SQUASHFS в $fsfs\n";
exit 0
}
$n=shift @result;$n=shift @result;$n=shift @result;
#пропустим не нужное (кривовато но просто (и работает)

while ($n=shift @result ){#вытаскиваем по 1му элементу из массива в $n
#
$k++;                 #$k нужен для отладки - можно убрать
@z=split (/\s+/,$n ); #разделитель - пробел(ы)
$str=substr $z[5],13; #5й элемент - полный путь к файлу(или каталогу ссылке)
                  #1е 13 буков(squashfs_root) НЕ нужны - отсекаем
#0й - права(и ТИП - файл-каталог-ссылка)
#1й - владелец-группа
#2й - размер
$str2=substr $z[0],0,1;#нам нужен тип: "-"-обычный файл, "d"-каталог , "l"-ссылка
if (-e $str and not(-d $str)) { #нашли что-то (НЕ каталог)
$chek++ ;
$sowpadenie="$sowpadenie$str2 $str\n";
}

#
print "$str2 $str\n";
#print "$z[5]\n"
}

print "k=$k\n";
print "совпало > $chek\n";
print "$sowpadenie";
прошу тыкать носом в ошибки  :)
пожелания улучшения приветствуются  ;)
Название: Re:Скрипты для обсуждения.
Отправлено: Lexeii от 12 Октябрь 2011, 13:14:11
Мне кажется, что лучше скрипты выкладывать на (http://pastebin.com/favicon.ico)pastebin.com (http://pastebin.com/). Для этого там даже не обязательно регистрироваться. Подсветка синтаксиса для большого количества языков программирования делает скрипт не только приятным для глаз, но и более понятным.

Предлагаю скрипт (http://pastebin.com/gSJzBwsY) для пакетного переименования файлов фотографий. Скрипт хорошо прокомментирован.

Назначение. Названия файлов становятся уникальными и зависят от даты и времени съемки, хранящейся в самом файле (в (http://ru.wikipedia.org/favicon.ico)EXIF (http://ru.wikipedia.org/wiki/EXIF)).
Скрипт позволяет расположить ваши фотографии в папках в хронологическом порядке.
Скрипт будет особенно полезен, когда нужно будет собрать в одну папку фотографии какого-либо одного события (например, свадьбы, или похода на природу) с нескольких фотоаппаратов. Конечно же, на всех аппаратах должна быть верно выставлена дата и время!

Установка. Скрипт может иметь любое имя, его лучше всего поместить в папку /usr/bin (или любую другую, присутствующую в $PATH) и дать ему разрешение на исполнение.

Использование. Перейдите в нужную папку с фотографиями и запустите скрипт из этой папки (в папке — открыть терминал, ввести renexif и Enter). Файлы будут переименованы, лог переименования вы увидите в терминале и в файле renexif.log в этой папке.
Название: Re:Скрипты для обсуждения.
Отправлено: shelezyaka от 13 Октябрь 2011, 21:56:20
У всех у нас много фотографий и иногда мы не помним когда мы их снимали,чем  и.т.д.
Сделаем в контекстном меню ROX пункт info-foto,чтобы получать информацию о фотографии.
Создаём папку     /usr/local/apps/Info-foto      в ней создаём два текстовых файлика , один с названием
AppRun        и содержанием
Код
#!/bin/sh
exec exiv2 pr "$@" > /tmp/info.txt &
exec geany /tmp/info.txt
Не забываем дать права на исполнение.
И второй с названием      AppInfo.xml        и содержанием
Код
<?xml version="1.0"?>
<AppInfo>
  <Summary>Info-foto</Summary>
</AppInfo>
Далее в папке     /root/.config/rox.sourceforge.net/OpenWith/.image_jpeg/     создаём симлинк на папку                      /usr/local/apps/Info-foto.
Теперь при щелчке правой кнопки мыши на фотографии мы видим пункт info-foto , и смотрим информацию .
Название: Re:Скрипты для обсуждения.
Отправлено: shelezyaka от 14 Октябрь 2011, 01:41:46
Судя по форуму грядёт "эра большого дистростроительства".
Предлагаю сборщикам вкладывать в свой iso образ приведённый скрипт.Он проверяет целостность записи на болванку или флешку (из папки тоже работает).Если мы проверяем ,иногда ... и если сборщик укажет, md5sum образа,то дальнейший процесс записи ,особенно на болванку ,может давать огрехи.
Я думаю отпадёт много вопросов типа - "записал на болванку а не едет".
Для примера взята сборка    xLupuRus528_Ivanna.
Код
#!/bin/sh
APPTITLE="проверка сборки"
APPNAME="click-to-verify"
LOGFILE="/tmp/verify-md5.log"
# Пожалуйста измените строки VERSION= и MD5SUMS= чтобы они соответствовали вашей версии
# Между суммой и названием файла ОБЯЗАТЕЛЬНО! два пробела
VERSION='xLupuRus528_Ivanna'
MD5SUMS='561028cf92f3d1af81c93e7a05618ff2  initrd.gz
68589a543766badd8b596726386e4105  luci_528.sfs
082167e9aeef3a2edd7746297f2afaba  vmlinuz
f12b09cfe99bdb7112a48303f774c4da  zl528332.sfs'

# Определяем путь в это приложение
CURDIR="`pwd`"
APPDIR=`dirname "$0"`
cd "${APPDIR}"
APPDIR="`pwd`"

echo -en "`date +'%-e %b %Y'` on `uname -rs` \n" > "$LOGFILE"
   Xdialog --title " $APPTITLE" --wmclass "$APPNAME" --no-cancel  \
           --backtitle "Проверяем  $VERSION  основные системные файлы \n" \
           --tailbox "$LOGFILE" 27 80 &

[ -f /etc/issue ] && echo -e "RU   `cat /etc/issue` " >> "$LOGFILE"
echo >> "$LOGFILE"
echo "Обработка директории '$APPDIR'" >> "$LOGFILE"
echo "$MD5SUMS" | md5sum -c - >> "$LOGFILE"
  Err=$?
echo "Result code: $Err"
echo >> "$LOGFILE"
if [ $Err -eq 0 ] ;then
   echo "Отлично, md5sum проверка прошла успешно !" >> "$LOGFILE"
else
   echo "Если MD5 проверка сборки  $VERSION   прошла неудачно"  >> "$LOGFILE"
   echo "восстановите неправильные файлы из надёжного источника." >> "$LOGFILE"
   echo "В случае записи образа на CD, перепишите заново." >> "$LOGFILE"
fi
exit # END SCRIPT #

Назовите например    click-to-verify
Название: Re:Скрипты для обсуждения.
Отправлено: dim-kut от 23 Ноябрь 2011, 14:02:48
echo "Если MD5 проверка сборки  $VERSION   прошла неудачно"  >> "$LOGFILE"
Слово "Если" тут наверное лишнее, т.к. это выводится в случае ошибки.
Название: Re:Скрипты для обсуждения.
Отправлено: shelezyaka от 23 Ноябрь 2011, 16:39:34
echo "Если MD5 проверка сборки  $VERSION   прошла неудачно"  >> "$LOGFILE"
Слово "Если" тут наверное лишнее, т.к. это выводится в случае ошибки.
Да  модифицируйте как хотите,я ж не сказал что этот скрипт "догма",это предложение к использованию.
Название: Re:Скрипты для обсуждения.
Отправлено: bicyclist56 от 25 Январь 2012, 08:02:34
Утомляет сначала подключать нужную SFS, затем лезть в меню и запускать программу, ради которой, собственно, и подключали SFS. Можно наделать скриптов, объединяющих подключение и запуск, причем, подключать можно и несколько SFS в одном скрипте.
Для примера - скрипт для запуска OpenOffice:
Код
#!/bin/bash
mkdir /mnt/.OOo-3.2.0_ru
mount -o loop /root/Desktop/SFS/OOo-3.2.0_ru.sfs /mnt/.OOo-3.2.0_ru
mount -o remount,append:/mnt/.OOo-3.2.0_ru /
/usr/bin/openoffice.org3
Отключать SFS до перезагрузки привычным образом, если уж потребуется, клацая по SFS.
Конечно, еще бы добавить в скрипт проверки:
- если программа уже запущена, то закрыть прогу, отключить SFS;
- если программа закрыта, а SFS подключена, отключить SFS;
- иначе... см. выше
Но, в скриптописании я не разбирался еще... Может, кто допишет?  ;)
Название: Re:Скрипты для обсуждения.
Отправлено: DdShurick от 25 Январь 2012, 10:10:32
 load_sfs последняя строка, сообщение об удачном подключении
Код
Xdialog --title "$self" --msgbox "Успешно! SFS-модуль `basename $sfs_file` подключен.\n"  6 0 
изменяем на
Код
Xdialog --title "$self" --yesno "Успешно! SFS-модуль `basename $sfs_file` подключен.
Запустить программу?"  6 0
[ $? = 0 ] && exec $(cat $mount_point/usr/share/applications/*.desktop | grep Exec | cut -f2 -d '=')
Недостаток, в sfs должен быть только один .desktop файл, а значит всего одна программа.
Название: Re:Скрипты для обсуждения.
Отправлено: bicyclist56 от 25 Январь 2012, 10:32:52
одна программа
Гм, а если их несколько, как в случае с Офисом, что произойдет?
...
Так, в таком варианте Офис выбрасывает кучу окошек: нет файлов, нет каталогов...
А вот как в моем варианте добавить проверку, по указанной логике? Не так уж много у меня часто используемых SFS, всего десяток, чтобы лениться сделать скриптик на каждую.
Название: Re:Скрипты для обсуждения.
Отправлено: dim-kut от 25 Январь 2012, 10:52:21
Я думаю интереснее сделать типовые скрипты внутри sfs, которые будут выполняться при подключении-отключении, как это сделано с .pet. И прописывать в этих скриптах запуск программ и чего еще душе угодно.

Реализовать это можно так:
1. Договорится о каталоге, где они будут лежать.
2. Договорится об имени, например - имя_sfs_модуля.in.sh и имя_sfs_модуля.out.sh
И load_sfs и unload_sfs перед отключением и после подключения ищут эти файлы и если находят - выполняют.

Название: Re:Скрипты для обсуждения.
Отправлено: Pro от 25 Январь 2012, 10:59:56
Реализовать это можно так:
В PuppyRus-2 уже давно реализовано, скрипты start.sh и stop.sh ложатся в корень sfs и срабатывают при подключении-отключении соответственно.
Название: Re:Скрипты для обсуждения.
Отправлено: bicyclist56 от 25 Январь 2012, 11:05:06
Договорится
Так это придется все SFS перелопачивать... А так, конечно, интереснее.
Название: Re:Скрипты для обсуждения.
Отправлено: bicyclist56 от 25 Январь 2012, 11:13:42
В PuppyRus-2
Кстати, уважаемый Pro, если бы я был уверен, что мои железяки - Network: Realtek Device 8172, HP Deskjet D1460, HP Scanjet 2400 - заработают в PuppyRus-2, возможно, и занялся бы освоением оной. Но, увы, вай-фай запустить мне так и не удалось когда-то...
Название: Re:Скрипты для обсуждения.
Отправлено: dim-kut от 25 Январь 2012, 11:37:52
Но, увы, вай-фай запустить мне так и не удалось когда-то...
Может это были ранние беты? Я с вай-фаем вблизи впервые столкнулся несколько дней назад и настроил его минут за 5-10 в Pr2. Если нужны подробности - сообщу в отдельной теме.

В PuppyRus-2 уже давно реализовано, скрипты start.sh и stop.sh ложатся в корень sfs и срабатывают при подключении-отключении соответственно.
И кто об этом знает кроме Pro и DdShurick? Добавлю это в FAQ.
Название: Re:Скрипты для обсуждения.
Отправлено: bicyclist56 от 25 Январь 2012, 11:42:30
подробности
В 520...528-ых приходилось устанавливать пакетик r8192se_pci-k2.6.33.2.pet - повезло, кто-то сделал :) Ну что же, попробую еще раз Pr2, но сомневаюсь, что драйвер там уже имеется, или что найду готовый PET...
Название: Re:Скрипты для обсуждения.
Отправлено: sfs от 25 Январь 2012, 13:21:47
Проблема старта подключенного .sfs красиво решена в буржуйском sfs_load http://www.murga-linux.com/puppy/viewtopic.php?t=64354 . В конце появляется окно в котором из .desktop сделано что-то типа кнопок. Т.е. если .desktop несколько - не проблема - несколько кнопок и в .sfs ничего менять не надо. Живьем можно посмотреть в slacko5.3.
Немного обсуждали здесь http://forum.puppyrus.org/index.php/topic,10116.0.html
Автостарт планирую сделать здесь http://forum.puppyrus.org/index.php/topic,11021.new.html#new
Название: Re:Скрипты для обсуждения.
Отправлено: valentin от 23 Июнь 2013, 15:11:13
Может кому пригодится  :) .  На авторство не претендую :), т.к собрал из кусочков drive_all  и Startmount. После запуска, скрипт монтирует все не смонтированные, но видимые в системе диски - разделы HDD, usb, оптические.  Может запускаться как при старте системы, - например из rc.local  так и в ручном режиме - добавлен перезапуск  pup_event_frontend_d   для отображения изменившегося статуса в /root/Computer  или на рабочем столе.  
Название: Re:Скрипты для обсуждения.
Отправлено: Gerasats от 26 Июнь 2013, 23:11:41
строка 17 - ".......парам(о)етров..."
Название: Re:Скрипты для обсуждения.
Отправлено: valentin от 30 Июнь 2013, 17:27:55
Спасибо за критику, исправил  ::)  В новом варианте  жестко прописал параметр utf-8 для разделов vfat , а то при постановке в автозапуск из init.d при PUPMODE=5 его не определяло, и добился нормальной работы в puppy_precise_5.4.2  Обновленный вариант здесь (http://yadi.sk/d/mz6GNSJ66L-um) Перезалил еще раз , ошибочно выложил пробую версию  >:(