#!/bin/bash echo 'y' > outy sudo apt-get dist-upgrade < outy >& out rm -f outy declare -a LIST I=0 for i in $(cat out) do LIST[$((I))]=$i I=$(($I + 1)) done NUM=$(($I)) for ((J=0; NUM > J; J=(($J + 1)))) do if [ ${LIST[$((J))]} == "Не" ] ; then if [ ${LIST[$((J + 1))]} == "удалось" ] ; then if [ ${LIST[$((J + 2))]} == "получить" ] ; then break; fi fi fi done J=$(($J + 3)) # лень доделывать # 1 - если всего один файл, и он с неправильной длинной # 2 - если два подряд файла с неправильной длинной echo > inc-rpm echo > tmp-wget for ((I=0; NUM > I; I=(($I + 1)))) do if [ ${LIST[$((I))]} == "Err" ] ; then if [ ${LIST[$((I + 1))]} == 'file:' ] ; then echo ${LIST[$((J))]} >> tmp-wget echo '# '${LIST[$((J))]} >> inc-rpm while true do if [ ${LIST[$((J + 1))]} == 'Size' ]; then if [ ${LIST[$((J + 2))]} == 'mismatch' ]; then J=$(($J + 6)) echo '#!!! Size mismatch' >> inc-rpm echo ${LIST[$((J))]} >> tmp-wget echo '# '${LIST[$((J))]} >> inc-rpm fi else J=$(($J + 7)) break fi done echo ${LIST[$((I + 3))]}'-'${LIST[$((I + 4))]}'*' >> inc-rpm fi fi done echo > inc-load for i in $(cat tmp-wget) do echo 'ftp://ftp.altlinux.ru/pub/distributions/ALTLinux/Sisyphus/i586/'$(echo $i | cut -d '/' -f6,7,8) >> inc-load done rm -f tmp-wget