Posso criar um arquivo de configuração para um script de shell?

0

É possível criar um arquivo .sh ou .command com um arquivo de configuração?

Eu preciso fazer backup de sites via Terminal e poder colocar alguns dados em arquivos de configuração, e faça o shell executá-lo.

Por exemplo, o nome de usuário, senha, ssh id, et cetera.

#!/bin/bash
ssh [email protected] "tar cjvf webfilesbackup-date-'date +%Y%m%d'.tar.bz2 public_html/"    
ssh [email protected] "mysqldump -u user_admin -ppass database_1 > databasebackup-'date +%Y%m%d'-db.sql"
scp [email protected]:webfilesbackup-date-'date +%Y%m%d'.tar.bz2 ~/backup/
scp [email protected]:databasebackup-'date +%Y%m%d'-db.sql ~/backup/
ssh [email protected] "rm -f webfilesbackup-date-'date +%Y%m%d'.tar.bz2"
ssh [email protected] "rm -f databasebackup-'date +%Y%m%d'-db.sql"
    
por macman 02.02.2012 / 14:01

4 respostas

5

Crie um arquivo (por exemplo, settings ) com suas configurações como variáveis:

username='foo'
pass='bar'
website='baz'
database='yak'

Em seguida, digite o arquivo do seu script e você poderá acessar as variáveis:

. settings
echo $username     # <- this will print "foo"

Em relação à sua segunda "pergunta", se você tiver vários hosts, poderá ter vários arquivos de configuração e obter o que foi passado como argumento para o seu script. Por exemplo, crie um arquivo de configuração chamado site1 .

Chame seu script com ./backup.sh site1

. $1               # <- this will load the file "site1"
echo $username     # <- this will print "foo"

Com seu script de backup, isso significaria:

#!/bin/bash
. $1
ssh [email protected] "tar cjvf webfilesbackup-date-'date +%Y%m%d'.tar.bz2 public_html/"
ssh [email protected] "mysqldump -u $user -p$pass $database > databasebackup-'date +%Y%m%d'-db.sql"
# ... and so on
    
por 02.02.2012 / 14:08
0

A outra opção é apenas criar um arquivo de texto e usar um loop while para acessar o arquivo linha por linha.

    
por 02.02.2012 / 18:04
0
mkdir -p Example.app/Contents/MacOS'
cp script.sh Example.app/Contents/MacOS/Example

... e isso vai funcionar. Este artigo contém instruções mais detalhadas, incluindo como obter ícones personalizados.

Você também pode procurar o Automator ou o AppleScript Studio como formas de criar aplicativos que podem ser executados sem problemas, sem precisar executá-lo manualmente.

    
por 02.02.2012 / 19:40
0
     # parse the ini like $0.hostname.conf and set the variables
     # place a $0.'hostname -s'.conf file in the same dir as your script
     # set here any VarName=VarValue
     # use ; for comments - you will get host independant conf file 
     # for your bash scripts - [examle usage :][1] 
     doParseIniFile(){
        eval 'sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
            -e 's/;.*$//' \
            -e 's/[[:space:]]*$//' \
            -e 's/^[[:space:]]*//' \
            -e "s/^\(.*\)=\([^\"']*\)$/=\"\"/" \
           < $IniFile \
            | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"'
     }
     #eof function doParseIniFile
    
por 20.11.2012 / 21:06