Roteadores de backup de script de shell

0

Abaixo está um script que eu escrevi para fazer backup dos meus roteadores e modem adsl. Alguma idéia para compactar este script em menos linhas?

Cada roteador tem um tipo diferente de estrutura, como você pode ver.

#!/bin/sh
http_txt="10.0.0.59"
cgi="10.0.0.60"
http="10.0.0.66"
date="$(date +%d-%m-%y)"
dest="/home/yamash/"
archive_file="$dest$date.tgz"
local="$dest$date"
login="admin"
pass="PASSWORD"

mkdir $local
cd "$local"
echo "Iniciando Backup"

for http_txt_for in $http_txt; do
    echo "$http_txt_for"
    wget --auth-no-challenge --user=$login --password=$pass $http_txt_for/config.dat -O $http_txt_for.dat
done

for cgi_for in $cgi; do
    echo "$cgi_for"
    wget --user=$login --password=$pass $cgi_for/cgi-bin/export_settings.cgi -O $cgi_for.dat
done

for http_for in $http; do
    echo "$http_for"
    wget --user=$login --password=$pass $http_for/rom-0 -O $http_for
done

cd ..
tar czf $archive_file $local
#rm -R $archive_file $local
echo "Backup Finalizado"
    
por André M. Faria 04.05.2014 / 18:55

1 resposta

1

Algumas possibilidades:

  • Você não precisa fazer um loop se a variável tiver apenas um único valor.
  • Use o modo detalhado em vez de echo ing informações de depuração. echo s como esses são como comentários: eles não são códigos e podem se tornar obsoletos. Imprimir o que está realmente acontecendo é muito mais útil para a depuração.
  • Você pode usar wget --output-document=/path/to/file para evitar cd ing antes de wget ting.
  • Você pode usar tar -C .. para acessar o diretório pai antes de executar a operação tar sem cd .
  • Por que criar um diretório e um nome de arquivo com a data? Você só precisa de um indicador de data no nome do tarball. A solução canônica para esse tipo de coisa é

    tmp="$(mktemp -d)"
    trap -- 'rm -frv -- "$tmp"' EXIT
    cd -- "$tmp"
    

    e armazene os arquivos temporários lá. Isso também elimina a necessidade das duas dicas anteriores.

  • Se você precisar da data apenas uma vez, poderá inserir $date .
por l0b0 04.05.2014 / 23:21