както казах при пускането на задачата, след две седмици ще пусна своя отговор.
сега го правя. Моля онези които мислят че могат да подобрят по някакъв начин
скрипта да го направят и да се свържат с мен.
/*---------------------------packscript.sh------------------------------*/
#!/bin/bash
#########################################################################
# #
# Прави автоматично Packages файл за Дебиански пакети #
# от директорията в която е бил извикан и записва изхода в #
# директорията подадена като аргумент 1 #
# Променливата packdir е тази променлива която определя #
# местоположението на .deb файлът в самият Package файл. #
# По принцип тя е празна но може да бъде подадена само #
# като втори параметър. #
# При подаването й накрая след името на директорията #
# трябва да има наклонена черта #
# #
# Следват няколко примера с извикване на скрипта #
# ./packscript.sh . paketi/ #
# ./packscript.sh ~ #
# ./packscript.sh /mnt/distro paketni_fileove/ #
# ./packscript.sh
# #
# #
# Написан от thegold_u #
# #
#########################################################################
outdir="."
ORIG_PACK_FILE=""
niz=""
tmp_str=" "
nwl='
'
packdir=""
if [ $# -eq 2 ]
then
packdir="$2/"
fi
if [ `ls Packages`='Packages' ]
then
ORIG_PACK_FILE=`cat Packages`
ORIG_PACK_FILE="$ORIG_PACK_FILE$nwl$nwl$nwl"
fi
for debfile in *.deb
do
dpkg --control $debfile contdir
tmp_str=`cat contdir/control`
# конкатенираме променливата niz с информация за името на файлът
niz="$niz$tmp_str$nwl"
fileinfo="Filename: $packdir$debfile"
niz="$niz$fileinfo$nwl"
# конкатенираме променливата niz с информация за md5 проверката
integer=1
for md5var in `md5sum $debfile`
do
if [ $integer -eq 1 ]
then
md5info="$md5var"
fi
let "integer = $integer + 1"
done
md5info="MD5sum: $md5info"
niz="$niz$md5info$nwl"
# конкатенираме променливата niz с информация за размера на файлът
integer=1
for sizevar in `ls -la $debfile`
do
if [ $integer -eq 5 ]
then
sizeinfo="$sizevar"
fi
let "integer = $integer + 1"
done
sizeinfo="Size: $sizeinfo"
niz="$niz$sizeinfo"
niz="$niz$nwl$nwl$nwl"
done
# Премахваме директорията contdir където сме съхранили файловете
# от control.tar.gz архива след това проверяваме дали на командния
# ред има зададени по-вече от нула параметъра и ако е така взимаме
# първият параметър като считаме че това е директорията където
# потребителят иска да запише Packages файлът.
rm -fr contdir
if [ $# -ge 1 ]
then
outdir=$1
fi
echo "$ORIG_PACK_FILE$niz" > $outdir/Packages
Искрено ваш thegold_u
|