Você não está autenticado.
Arch Linux Brasil está precisando de sua colaboração para realizar o pagamento do domínio e do host, para colaborar, realizar doações via paypal.
Para mais informações: contato at archlinux-br.org.
Páginas: 1
Estava buscando um script para atualizar a mirrorlist e encontrei este https://wiki.archlinux.org/index.php/Mi … _Generator
Mas para baixar 2 ou 3 selecionados, teria que sempre editar o arquivo. Então criei um, que trabalha do mesmo jeito da página.
Baseado na página http://www.archlinux.org/mirrorlist/
- As opções foram sincronizadas com o site http://www.archlinux.org/mirrorlist/ em 03/11/11
- Baixa as mirrors dos países escolhidos
- Descomenta as mirrors
- Aplica rankmirrors
- Faz backup e copia a mirrorlist e apaga backup
- Os arquivos são criados na pasta /tmp
- Se for necessário, sudo será utilizado
Salve com o nome que você quiser. Aqui utilizei mirrorlist_up
Aplique a permissão de executar no arquivo
chmod +x mirrorlist_up
Código
#!/bin/bash
#
# Atualizar a mirrorlist do pacman
# Utiliza a página http://www.archlinux.org/mirrorlist/
# swatquest
#
# Declarações globais
declare -rx NOMESCRIPT=${0##*/} # NOMESCRIPT é o nome deste script
declare -rx wget="/usr/bin/wget" # comando wget
declare -rx TMPLINK="/tmp/link.txt" # nome e local do arquivo de captura do link
declare -rx LOCALMIRRORLIST="/tmp/" # local temporário para o arquivo mirrorlist do script
declare -i a
declare -i b
declare VERSION="0.5"
declare SINCRO="04/05/2012"
# Verificação de requesitos
if [ -z "$BASH" ]; then
printf "$NOMESCRIPT: Por favor, execute este script com o shell BASH.\n" >&2
exit 192
fi
if [ ! -x "$wget" ]; then
printf "$NOMESCRIPT: O comando wget não está disponível.\n" >&2
exit 192
fi
[ "$UID" != 0 ] && SU=sudo
printf "Iniciando o script "$NOMESCRIPT" versão:$VERSION\n"
printf "Sincronizado em $SINCRO\n"
# Leitura do teclado da seleção
printf "%s\n" "1) Todos 27) Latvia
2) Australia 28) Luxembourg
3) Belarus 29) Macedonia
4) Belgium 30) Netherlands
5) Brazil 31) New Caledonia
6) Bulgaria 32) Norway
7) Canada 33) Poland
8) Chile 34) Portugal
9) China 35) Romania
10) Colombia 36) Russian
11) Czech Republic 37) Serbia
12) Denmark 38) Singapore
13) Estonia 39) Slovakia
14) Finland 40) South Africa
15) France 41) Spain
16) Germany 42) Sri Lanka
17) Greece 43) Sweden
18) Hungary 44) Switzerland
19) India 45) Taiwan
20) Indonesia 46) Turkey
21) Ireland 47) Ukraine
22) Israel 48) United Kingdom
23) Italy 49) United States
24) Japan 50) Uzbekistan
25) Kazakhstan 51) Viet Nam
26) Korea"
while read -p "Escolha os países [ padrão=todos ]:" RESPCOUNTRY ; do
for a in ${RESPCOUNTRY[@]}; do
[[ $a -ge 52 ]] && break
done
[[ $RESPCOUNTRY = [a-z]* ]] && continue
[[ $a -lt 53 ]] && break
done
printf "%s\n" "1) ftp 2) http";
while read -p "Escolha uma opçao para protocolo [ padrão=todos ]:" -a RESPPROTOCOL ; do
if [[ $RESPPROTOCOL = [a-z]* || ${#RESPPROTOCOL[@]} -gt 1 ]]; then
continue
elif [[ ${RESPPROTOCOL[0]} -lt 3 || $RESPPROTOCOL = "" ]]; then
break
fi
done
printf "%s\n" "1) IPv4 2) IPv6";
while read -p "Escolha uma opção para versão do ip [ padrão=IPv4 ]:" -a RESPIPVERSION ; do
if [[ $RESPIPVERSION = [a-z]* || ${#RESPIPVERSION[@]} -gt 1 ]]; then
continue
elif [[ ${RESPIPVERSION[0]} -lt 3 || $RESPIPVERSION = "" ]]; then
break
fi
done
printf "%s\n" "s) Habilitado n) Desabilitado";
while read -p "Habilitar status do espelho? [ padrão=n ] [S/n]" RESPMIRROR ; do
[[ $RESPMIRROR = [SsNn] || $RESPMIRROR = "" ]] && break
done
# Inicio da captura da mirrorlist
printf "\n%s\n" "Criando link e enviando para o arquivo link.txt."
printf "%s" "http://www.archlinux.org/mirrorlist/?" > "$TMPLINK"
# Captura dos países
if [[ $RESPCOUNTRY = "" ]]; then
COUNTRY="country=all";
printf "%s&" "$COUNTRY" >> "$TMPLINK"
else
for b in ${RESPCOUNTRY[@]}; do
case "$b" in
1) COUNTRY="country=all";;
2) COUNTRY="country=AU";;
3) COUNTRY="country=BY";;
4) COUNTRY="country=BE";;
5) COUNTRY="country=BR";;
6) COUNTRY="country=BG";;
7) COUNTRY="country=CA";;
8) COUNTRY="country=CL";;
9) COUNTRY="country=CN";;
10) COUNTRY="country=CO";;
11) COUNTRY="country=CZ";;
12) COUNTRY="country=DK";;
13) COUNTRY="country=EE";;
14) COUNTRY="country=FI";;
15) COUNTRY="country=FR";;
16) COUNTRY="country=DE";;
17) COUNTRY="country=GR";;
18) COUNTRY="country=HU";;
19) COUNTRY="country=IN";;
20) COUNTRY="country=ID";;
21) COUNTRY="country=IE";;
22) COUNTRY="country=IL";;
23) COUNTRY="country=IT";;
24) COUNTRY="country=JP";;
25) COUNTRY="country=KZ";;
26) COUNTRY="country=KR";;
27) COUNTRY="country=LV";;
28) COUNTRY="country=LU";;
29) COUNTRY="country=MK";;
30) COUNTRY="country=NL";;
31) COUNTRY="country=NC";;
32) COUNTRY="country=NO";;
33) COUNTRY="country=PL";;
34) COUNTRY="country=PT";;
35) COUNTRY="country=RO";;
36) COUNTRY="country=RU";;
37) COUNTRY="country=RS";;
38) COUNTRY="country=SG";;
39) COUNTRY="country=SK";;
40) COUNTRY="country=ZA";;
41) COUNTRY="country=ES";;
42) COUNTRY="country=LK";;
43) COUNTRY="country=SE";;
44) COUNTRY="country=CH";;
45) COUNTRY="country=TW";;
46) COUNTRY="country=TR";;
47) COUNTRY="country=UA";;
48) COUNTRY="country=GB";;
49) COUNTRY="country=US";;
50) COUNTRY="country=UZ";;
51) COUNTRY="country=VN";;
esac
printf "%s&" "$COUNTRY" >> "$TMPLINK"
done
fi
# Captura dos protocolos
if [[ $RESPPROTOCOL = "" ]]; then
PROTOCOL="protocol=ftp&protocol=http";
printf "%s" "$PROTOCOL" >> "$TMPLINK"
else
case "$RESPPROTOCOL" in
1) PROTOCOL="protocol=ftp";;
2) PROTOCOL="protocol=http";;
esac
printf "%s" "$PROTOCOL" >> "$TMPLINK"
fi
# Captura das versões de ip
if [[ $RESPIPVERSION = "" ]]; then
IPVERSION="ip_version=4";
printf "&%s" "$IPVERSION" >> "$TMPLINK"
else
case "$RESPIPVERSION" in
1) IPVERSION="ip_version=4";;
2) IPVERSION="ip_version=6";;
esac
printf "&%s" "$IPVERSION" >> "$TMPLINK"
fi
# Captura do estado do espelho
if [[ $RESPMIRROR = "" ]]; then
STATUSMIRROR="";
printf "%s" "$STATUSMIRROR" >> "$TMPLINK"
else
case "$RESPMIRROR" in
[Ss]) STATUSMIRROR="&use_mirror_status=on";;
[Nn]) STATUSMIRROR="";;
esac
printf "%s" "$STATUSMIRROR" >> "$TMPLINK"
fi
printf "\n%s\n" "Baixando e criando arquivo mirrorlist.$NOMESCRIPT"
wget -O "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT" -i "$TMPLINK"
printf "\n%s\n" "Apagando arquivo: \""$TMPLINK"\"".
rm "$TMPLINK"
# Descomentar mirrors
while read -p "Você quer descomentar as mirrors? [S/n]" RESPDESCOMENTAR ; do
[[ $RESPDESCOMENTAR = [SsNn] ]] && break
done
if [[ $RESPDESCOMENTAR = [Ss] ]]; then
printf "Descomentando as mirrors.\n"
sed '/^#S/ s|#||' -i "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT"
# Aplicar rankmirrors
printf "Atenção:\n É recomendável utilizar o rankmirrors, pois ele determina a melhor conexão.\n Serão determinados 10 espelhos.\n"
while read -p "Você quer utilizar o script rankmirrors? [S/n]" RESPRANK ; do
[[ $RESPRANK = [SsNn] ]] && break
done
if [[ $RESPRANK = [Ss] ]]; then
printf "Executando rankmirrors.\n"
printf "O processo pode demorar um pouco.\n"
rankmirrors -n 10 "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT" > "$LOCALMIRRORLIST"mirrorlist
rm "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT"
printf "Rankmirrors finalizado.\n"
elif [[ $RESPRANK = [Nn] ]]; then
printf "Rankmirrors não executado.\n"
fi
# Backup e copia do arquivo
printf "\n%s\n" "Se for necessário, o comando sudo será utilizado."
printf "Será feito um backup da mirrorlist em /etc/pacman.d/ com o nome \"mirrolist.bkp\".\n"
while read -p "Você quer mover o arquivo para a pasta \"/etc/pacman.d/\"? [S/n]" RESPCOPIAR ; do
[[ $RESPCOPIAR = [SsNn] ]] && break
done
if [[ $RESPCOPIAR = [Ss] ]]; then
$SU cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bkp
printf "Criando backup.\n"
if [[ -f "$LOCALMIRRORLIST"mirrorlist ]]; then
printf "Definindo permisão para 755.\n"
chmod 755 "$LOCALMIRRORLIST"mirrorlist
printf "Modificando nome do dono e do grupo para root.\n"
$SU chown root:root "$LOCALMIRRORLIST"mirrorlist
printf "Movendo arquivo.\n"
$SU mv "$LOCALMIRRORLIST"mirrorlist /etc/pacman.d/mirrorlist
elif [[ -f "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT" ]]; then
printf "Definindo permisão para 755.\n"
chmod 755 "$LOCALMIRRORLIST"mirrorlist.$NOMESCRIPT
printf "Modificando nome do dono e do grupo para root.\n"
$SU chown root:root "$LOCALMIRRORLIST"mirrorlist.$NOMESCRIPT
printf "Movendo arquivo.\n"
$SU mv "$LOCALMIRRORLIST"mirrorlist.$NOMESCRIPT /etc/pacman.d/mirrorlist
fi
# Verificar se a mirrorlist está funcionando
printf "Aguarde 5 segundos para o teste da mirrorlist.\n"
sleep 5
printf "Testando mirrorlist.\n"
$SU pacman -Syy
# Apagar arquivo
printf "\nSe o processo de sincronização funcionou,\n"
while read -p "você quer apagar o arquivo de backup? [S/n]" RESPDELBACKUP ;
do
[[ $RESPDELBACKUP = [SsNn] ]] && break
done
if [[ $RESPDELBACKUP = [Ss] ]]; then
printf "Apagando o arquivo de backup em \"/etc/pacman.d/\".\n"
$SU rm /etc/pacman.d/mirrorlist.bkp
elif [[ $RESPDELBACKUP = [Nn] ]]; then
printf "Restaurando o arquivo de backup em \"/etc/pacman.d/\".\n"
$SU mv /etc/pacman.d/mirrorlist.bkp /etc/pacman.d/mirrorlist
fi
elif [[ $RESPCOPIAR = [Nn] ]]; then
printf "Arquivo não copiado.\n"
printf "Um dos arquivos temporários estão na pasta \""$LOCALMIRRORLIST"\"\n"
printf "Com rankmirrors: mirrorlist\nSem rankmirrors: mirrorlist."$NOMESCRIPT"\n"
fi
elif [[ $RESPDESCOMENTAR = [Nn] ]]; then
printf "As mirrors não foram decomentadas.\n"
printf "Localização do arquivo: \""$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT"\"\n"
fi
exit 0
Última edição por swatquest (10/05/2012 01:49:53)
Offline
Massa heim @swatquest !
Ótimo trabalho.
De repente, o que acham, poderia ser criado um espaço no site para se colocar estes scripts/programas que o pessoal cria, e que todos gostam, listados organizadamente com suas descrições, criador e data da ultima alteração. Ficaria muito mais fácil o acesso...
Sérgio Berlotto Jr,
Colaborador, Programador
"O ArchLinux é o que você faz!" (Judd)
http://www.berlotto.net
Offline
excelente trabalho mesmo....! esta de parabéns!
Offline
Valeu galera.
Atualizado para versão 0.2
- correção na construção do link IPVERSION
correção
linha 159
IPVERSION=IPVERSION=ip_version=4";
para
IPVERSION="ip_version=4";
Para versão 0.3
- Opção de restauração do arquivo de backup se não funcionar a sincronização do pacman.
Última edição por swatquest (07/11/2011 15:49:52)
Offline
Atualizado para versão 0.3
- Fixado o descomentar do arquivo.
- Adicionado a restauração do arquivo de backup se não funcionar o teste de sincronização
Modificação
LINHA 188
sed '/^#\S/ s|#||' -i "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT"
PARA
sed '/^#S/ s|#||' -i "$LOCALMIRRORLIST"mirrorlist."$NOMESCRIPT"
LINHA 247
printf "Arquivo não apagado.\n"
PARA
printf "Restaurando o arquivo de backup em \"/etc/pacman.d/\".\n"
$SU mv /etc/pacman.d/mirrorlist.bkp /etc/pacman.d/mirrorlist
Offline
versão 0.4
* sincronizado com site http://www.archlinux.org/mirrorlist/
Offline
@swatquest testei aqui e algumas respostas com "S/n" não funcionaram. Só isto, o resto está jóia mesmo heim !
Sérgio Berlotto Jr,
Colaborador, Programador
"O ArchLinux é o que você faz!" (Judd)
http://www.berlotto.net
Offline
sberlotto
Valeu..
versão 0.5
Fixado S/n
- Do descomentar
- Do rankmirrors
- Do copiar
- Do bakup
Última edição por swatquest (10/05/2012 01:50:18)
Offline
Páginas: 1