Знатоки - как это можно рапустить ?

Рассматриваются вопросы связанные с автоматизацией процесса управления сетью, установки программного обеспечения, управления пользователями и т.д.

Модератор: Модераторы

Активный пользователь
Сообщения: 774
Зарегистрирован: 20 май 2004, 09:23
Откуда: Москва

Сообщение Xenon[BMSTU] » 06 июн 2005, 11:41

#! /bin/sh

INITDIR=boot-images/initrd
PKGDIR=boot-images/pkg-packages
PACDIR=./tmp-tree/packages
MAXIMAGE=16384
TOOLSDIR=./utils/tools

## Make variable capitals

make_caps ()
{
echo $1 | tr "[a-z]" "[A-Z]"
}

## Add PKG Files to local Storage

addpkgs()
{
if ls $1/*.pkg > /dev/null 2>&1 ; then
rm $1/*.pkg
fi
if [ "`make_caps $localpkgs`" = "TRUE" ] ; then
if ls $PKGDIR/*.pkg > /dev/null 2>&1 ; then
cp $PKGDIR/*.pkg $1
fi
fi
}

lib_dependencies()
{

echo -e "\nAdding Library Dependencies\n"

(ls -1 $PACDIR/*.$1 2>/dev/null ) |
while read name
do
package=`basename $name .$1`
file `find ./packages/$package -name "*" -type f | grep -v \.idl | grep -v e3`\
| grep "ELF 32-bit" | cut -d: -f1 > ./liblist

(cat ./liblist ) |
while read filename
do
(ldd $filename 2>/dev/null | grep -v "not a dynamic executable" | cut -d= -f1 ) |
while read libname
do
libfile=`basename $libname`
if [ ! -e $PKGDIR/$package/lib/$libfile ] && [ ! -e ./tmp-tree/lib/$libfile ] ; then
if [ -e ./packages/lib/$libfile ] ; then
echo "Adding $libfile dependency for $package for `basename $filename`"
if [ $1 = "pkg" ] ; then
if [ ! -e $PKGDIR/$package/lib ] ; then
mkdir $PKGDIR/$package/lib
fi
cp ./packages/lib/$libfile $PKGDIR/$package/lib
else
cp ./packages/lib/$libfile ./tmp-tree/lib
fi
fi
fi
done
done
done

}

Это часть кода, весь - билдит image для тонкого клиента

Активный пользователь
Сообщения: 1134
Зарегистрирован: 19 июл 2004, 11:30
Откуда: Москва

Сообщение biruk » 07 июн 2005, 17:20

не понял вопроса....

скажи чего хочешь добиться?
Trust me - i know what i’m doing © Sledge Hummer

Активный пользователь
Сообщения: 774
Зарегистрирован: 20 май 2004, 09:23
Откуда: Москва

Сообщение Xenon[BMSTU] » 08 июн 2005, 10:00

этот сценарий создает образ загрузочного диска для бездисковых систем
его можно выполнить в Linux, мне ставить у себя где-то - нет смысла
интересует можно ли этот сценарий запустить под виндой

Администратор
Аватара пользователя
Сообщения: 2875
Зарегистрирован: 05 янв 2004, 17:21
Откуда: Москва

Сообщение GifteD » 08 июн 2005, 12:20

Xenon[BMSTU]
Не ну как винда поймет, например (
Цитата
ldd $filename 2>/dev/null | grep -v "not a dynamic executable" | cut -d= -f1 ) |
[/quote]

т.е. можно поискать интерпритатор какой-ть, но я даже сервиса не назову, который обработает это.
А потом... Создаем мы образ для тонкого клиента... И что происходит дальше?
Активный пользователь
Сообщения: 774
Зарегистрирован: 20 май 2004, 09:23
Откуда: Москва

Сообщение Xenon[BMSTU] » 08 июн 2005, 12:25

Вот имеено про интерпритатор и идет разговор.
Ну а после создания образа - все хорошо, пока созданю кустомезированный образ через TS-O-Matic на сайте разработчика всего этого.
Далее этот образ, если его можно так назвать, выкладываешь на tftp ну и так далее

Активный пользователь
Сообщения: 1134
Зарегистрирован: 19 июл 2004, 11:30
Откуда: Москва

Сообщение biruk » 08 июн 2005, 21:58

ну не создает он образ!
создаются переменные:
Цитата

INITDIR=boot-images/initrd
PKGDIR=boot-images/pkg-packages
PACDIR=./tmp-tree/packages
MAXIMAGE=16384
TOOLSDIR=./utils/tools

[/quote]


функция перевода в верхний регистр:
Цитата
make_caps ()
{
echo $1 | tr "[a-z]" "[A-Z]"
}
[/quote]

если что-либо похожее на *.pkg существует - то удаляется
и нечто куда-то ($1) копируется:
Цитата

addpkgs()
{
if ls $1/*.pkg > /dev/null 2>&1 ; then
rm $1/*.pkg
fi
if [ "`make_caps $localpkgs`" = "TRUE" ] ; then
if ls $PKGDIR/*.pkg > /dev/null 2>&1 ; then
cp $PKGDIR/*.pkg $1
fi
fi
}
[/quote]


фонкция lib_dependencies() проверяет зависимости, причем список библиотек берет из файла liblist и в случае нехватки библиотек устанавливает нужные пакеты.


на винде ты такое не сделаешь...

поставь себе msys и потренеруйся в написании скриптов.

а образ начальной загрузки это initrd.

поставь линух скачай на него initrd, и подмонтируй
там все увидишь. если сможешь :)
Trust me - i know what i’m doing © Sledge Hummer

Активный пользователь
Сообщения: 774
Зарегистрирован: 20 май 2004, 09:23
Откуда: Москва

Сообщение Xenon[BMSTU] » 09 июн 2005, 09:55

я ведь не весь скрипт дал в студию, поверь - он создает некий образ

Активный пользователь
Сообщения: 1134
Зарегистрирован: 19 июл 2004, 11:30
Откуда: Москва

Сообщение biruk » 09 июн 2005, 19:19

Цитата (Xenon[BMSTU)
,9.06.2005 - 08:55]я ведь не весь скрипт дал в студию, поверь - он создает некий образ
[/quote]

даже если и так.

образ делается просто:
1. создается файл нужного размера:
dd if=/dev/zero of=initrd bs=1024 count=<скока надо>
2. форматируется в что-нить типа minix:
mkfs -t minix initrd
3. этот файл монтируется как устройство.
mount -o loop initrd image
4. напихивается туда все что надо.
5. отмонтируется .

все образ готов.

как ты будешь такое под виндой повторять?
Trust me - i know what i’m doing © Sledge Hummer

Активный пользователь
Сообщения: 774
Зарегистрирован: 20 май 2004, 09:23
Откуда: Москва

Сообщение Xenon[BMSTU] » 10 июн 2005, 10:00

в этом и есть вопрос - существует какой либо способ это повторить на винде, путем установки какой либо оболочки, интерпретатора и т.д.
я так понял - нет или никто не знает
тема закрыта

Новый участник
Сообщения: 6
Зарегистрирован: 10 июн 2005, 18:53

Сообщение Maniaq » 10 июн 2005, 18:59

А гуглем воспользоваться совсем не судьба? Знатоки блин, юниксов. Проект cygwin существует уже далеко не один год и оболочки всякие туда портировали одними из первых. Насчет твоего скрипта не в курсе, там все таки идет прямой доступ к устройствам типа /dev/fd0 чего винда просто так не даст сделать.

След.

Вернуться в Автоматизация процесса управления

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1