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


0

É possível criar um .sh concha ou .command arquivo 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 admin@host.com "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"    
ssh admin@host.com "mysqldump -u user_admin -ppass database_1 > databasebackup-`date +%Y%m%d`-db.sql"
scp admin@host.com:webfilesbackup-date-`date +%Y%m%d`.tar.bz2 ~/backup/
scp admin@host.com:databasebackup-`date +%Y%m%d`-db.sql ~/backup/
ssh admin@host.com "rm -f webfilesbackup-date-`date +%Y%m%d`.tar.bz2"
ssh admin@host.com "rm -f databasebackup-`date +%Y%m%d`-db.sql"

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, fonte o arquivo do seu script e você será capaz de acessar as variáveis:

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

Quanto à 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.

Ligue para o seu script com ./backup.sh site1

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

Com o seu script de backup, isso significaria:

#!/bin/bash
. $1
ssh admin@host.com "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"
ssh admin@host.com "mysqldump -u $user -p$pass $database > databasebackup-`date +%Y%m%d`-db.sql"
# ... and so on

3
Eu não adicionaria ".sh", pois não é para ser executado.
Ignacio Vazquez-Abrams

Se aberto Terminal.app e escrever algo como este backup -site1 eu tenho muitas consultas no arquivo de configuração (site2, site3) com diferente (ssh, pass) é possível?
macman

@macman -site1 seria um argumento para o seu script de shell. Se você postar o shell script em sua pergunta, seria mais fácil responder.
slhck

aqui está um diagrama de imagem Imgur
macman

-site1 talvez o parâmetro
macman

0

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


talvez funcione? {scp $ user: webfilesbackup-date-date +% Y% m% d.tar.bz2 ~ / backup /} no arquivo de configuração & gt; O arquivo de configuração {$ user = 'admin@host.com'} é. site.sh como adicionar este parâmetro ao .command para passar o backup do arquivo de configuração -site1
macman

0
mkdir -p Example.app/Contents/MacOS`
cp script.sh Example.app/Contents/MacOS/Example

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

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


sim, mas, eu pesquisando solução para escrever manualmente "backup-s1" para o terminal
macman

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/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
           < $IniFile \
            | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
     }
     #eof function doParseIniFile

Você se importaria em expandir sua resposta somente de código para explicar o que ela faz?
slhck
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.