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

Автор Тема: Скрипты для обсуждения.  (Прочитано 12604 раз)

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Скрипты для обсуждения.
« : 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 и всё открывается.
Моноблок 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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Скрипты для обсуждения.
« Ответ #1 : 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
« Последнее редактирование: 27 Август 2011, 07:40:26 от 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

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re:Скрипты для обсуждения.
« Ответ #2 : 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";
прошу тыкать носом в ошибки  :)
пожелания улучшения приветствуются  ;)
« Последнее редактирование: 10 Октябрь 2011, 20:43:57 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)

Оффлайн Lexeii

  • Почетный участник
  • Постоялец
  • *
  • Сообщений: 147
  • Репутация: +24/-0
    • блог Lexeii
Re:Скрипты для обсуждения.
« Ответ #3 : 12 Октябрь 2011, 13:14:11 »
Мне кажется, что лучше скрипты выкладывать на pastebin.com. Для этого там даже не обязательно регистрироваться. Подсветка синтаксиса для большого количества языков программирования делает скрипт не только приятным для глаз, но и более понятным.

Предлагаю скрипт для пакетного переименования файлов фотографий. Скрипт хорошо прокомментирован.

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

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

Использование. Перейдите в нужную папку с фотографиями и запустите скрипт из этой папки (в папке — открыть терминал, ввести renexif и Enter). Файлы будут переименованы, лог переименования вы увидите в терминале и в файле renexif.log в этой папке.
Linux is user friendly... It's just picky about who it  becomes friends with.

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Скрипты для обсуждения.
« Ответ #4 : 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 , и смотрим информацию .
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Скрипты для обсуждения.
« Ответ #5 : 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
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
Re:Скрипты для обсуждения.
« Ответ #6 : 23 Ноябрь 2011, 14:02:48 »
echo "Если MD5 проверка сборки  $VERSION   прошла неудачно"  >> "$LOGFILE"
Слово "Если" тут наверное лишнее, т.к. это выводится в случае ошибки.
Engineering is the art of making what you want from things you can get.

Оффлайн shelezyaka

  • Ветеран
  • *****
  • Сообщений: 814
  • Репутация: +39/-0
Re:Скрипты для обсуждения.
« Ответ #7 : 23 Ноябрь 2011, 16:39:34 »
echo "Если MD5 проверка сборки  $VERSION   прошла неудачно"  >> "$LOGFILE"
Слово "Если" тут наверное лишнее, т.к. это выводится в случае ошибки.
Да  модифицируйте как хотите,я ж не сказал что этот скрипт "догма",это предложение к использованию.
Intel(R) Xeon(R) CPU E5-2630 v2 , GeForce GTX 560  ,  16Gb DDR3 ,  HDD - 160 Gb  SSD  250 Gb
Acer Aspire One D270-26Сkk Intel Atom N2800 1.86GHz 2Gb DDR3  HDD - 720 Gb

Оффлайн bicyclist56

  • Ветеран
  • *****
  • Сообщений: 502
  • Репутация: +20/-1
  • Не дай мозгам засохнуть!
    • Мой блог
Re:Скрипты для обсуждения.
« Ответ #8 : 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;
- иначе... см. выше
Но, в скриптописании я не разбирался еще... Может, кто допишет?  ;)
« Последнее редактирование: 25 Январь 2012, 08:53:08 от bicyclist56 »
Неттоп Eglobal Intel Core i5 3317U 8 GB RAM 128 GB SSD + 120 GB SSD, Slax 9

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re:Скрипты для обсуждения.
« Ответ #9 : 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 файл, а значит всего одна программа.
Моноблок 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

Оффлайн bicyclist56

  • Ветеран
  • *****
  • Сообщений: 502
  • Репутация: +20/-1
  • Не дай мозгам засохнуть!
    • Мой блог
Re:Скрипты для обсуждения.
« Ответ #10 : 25 Январь 2012, 10:32:52 »
одна программа
Гм, а если их несколько, как в случае с Офисом, что произойдет?
...
Так, в таком варианте Офис выбрасывает кучу окошек: нет файлов, нет каталогов...
А вот как в моем варианте добавить проверку, по указанной логике? Не так уж много у меня часто используемых SFS, всего десяток, чтобы лениться сделать скриптик на каждую.
« Последнее редактирование: 25 Январь 2012, 10:48:40 от bicyclist56 »
Неттоп Eglobal Intel Core i5 3317U 8 GB RAM 128 GB SSD + 120 GB SSD, Slax 9

Оффлайн dim-kut

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1021
  • Репутация: +41/-0
Re:Скрипты для обсуждения.
« Ответ #11 : 25 Январь 2012, 10:52:21 »
Я думаю интереснее сделать типовые скрипты внутри sfs, которые будут выполняться при подключении-отключении, как это сделано с .pet. И прописывать в этих скриптах запуск программ и чего еще душе угодно.

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

Engineering is the art of making what you want from things you can get.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Скрипты для обсуждения.
« Ответ #12 : 25 Январь 2012, 10:59:56 »
Реализовать это можно так:
В PuppyRus-2 уже давно реализовано, скрипты start.sh и stop.sh ложатся в корень sfs и срабатывают при подключении-отключении соответственно.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн bicyclist56

  • Ветеран
  • *****
  • Сообщений: 502
  • Репутация: +20/-1
  • Не дай мозгам засохнуть!
    • Мой блог
Re:Скрипты для обсуждения.
« Ответ #13 : 25 Январь 2012, 11:05:06 »
Договорится
Так это придется все SFS перелопачивать... А так, конечно, интереснее.
« Последнее редактирование: 25 Январь 2012, 11:08:57 от bicyclist56 »
Неттоп Eglobal Intel Core i5 3317U 8 GB RAM 128 GB SSD + 120 GB SSD, Slax 9

Оффлайн bicyclist56

  • Ветеран
  • *****
  • Сообщений: 502
  • Репутация: +20/-1
  • Не дай мозгам засохнуть!
    • Мой блог
Re:Скрипты для обсуждения.
« Ответ #14 : 25 Январь 2012, 11:13:42 »
В PuppyRus-2
Кстати, уважаемый Pro, если бы я был уверен, что мои железяки - Network: Realtek Device 8172, HP Deskjet D1460, HP Scanjet 2400 - заработают в PuppyRus-2, возможно, и занялся бы освоением оной. Но, увы, вай-фай запустить мне так и не удалось когда-то...
Неттоп Eglobal Intel Core i5 3317U 8 GB RAM 128 GB SSD + 120 GB SSD, Slax 9