É possível criar um .sh
shell ou .command
arquivo com arquivo de configuração?
Preciso fazer backup de sites via Terminal e poder colocar alguns dados em arquivos de configuração e fazer com que o shell os execute.
Por exemplo, o nome de usuário, senha, id ssh, etc.
#!/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"
Responder1
Crie um arquivo (por exemplo settings
, ) com suas configurações como variáveis:
username='foo'
pass='bar'
website='baz'
database='yak'
Em seguida, obtenha o arquivo do seu script e você poderá acessar as variáveis:
. settings
echo $username # <- this will print "foo"
Com relação à sua segunda "pergunta", se você tiver vários hosts, poderá apenas ter vários arquivos de configuração e obter aquele 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 o 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
Responder2
A outra opção é apenas criar um arquivo de texto e usar um loop while para acessar esse arquivo linha por linha.
Responder3
mkdir -p Example.app/Contents/MacOS`
cp script.sh Example.app/Contents/MacOS/Example
...e isso vai funcionar. Este artigotem instruções mais detalhadas, incluindo como obter ícones personalizados.
Você também pode recorrer ao Automator ou ao AppleScript Studio como formas de criar aplicativos que possam ser executados de maneira saudável, sem precisar fazer isso manualmente.
Responder4
# 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