Coloque o arquivo de acesso ht no webroot de cada script bash do diretório

2

Estou tentando escrever um script que irá descer em cada subdiretório em / home e encontrar a pasta public_html dentro dele.

Em seguida, ele verificará se um .htaccess já existe, se ele gravar isso em um arquivo, se ele não existir, colocará o arquivo .htaccess em public_html

Agora eu tenho

#!/bin/bash
FILE=.htaccess
for d in */; do
cd "${D}"
cd public_hmtl
if [-e $FILE ]; then
echo "Htaccess exists for "${D}" >> /test/error.txt
else
cp /htaccess ./
fi

Isso obviamente não está certo, já que nem funciona. Eu não tive muita experiência com bash e faz um tempo desde que eu precisei usá-lo.

    
por Awumpa 05.10.2017 / 17:18

1 resposta

0
#!/bin/sh

htaccess='/path/to/.htaccess'

for dir in /home/*/public_html/; do
    if [ -e "$dir/.htaccess" ]; then
        print 'htaccess exists in "%s"\n' >&2
    else
        cp "$htaccess" "$dir"
    fi
done

Isso itera sobre todos os diretórios public_html em cada diretório em /home e verifica se já existe um arquivo .htaccess nele. Se houver, uma mensagem de diagnóstico será produzida, caso contrário, um padrão .htaccess será copiado de algum lugar.

Você executaria isso com

$ ./script 2>error.log

O problema com o seu código é o cd . Ele altera o diretório para um dos diretórios public_html (se executado a partir de /home ), mas nunca volta novamente.

    
por 05.10.2017 / 17:26